行った活動を、私の知りうる範囲で振り返りたいと思います。・4月4月は新入生歓迎(新歓)の時期ということで、課外活動オリエンテーションで、OUCCがしていることや開発したものを展示し、毎週金曜日には部室で説明会を行いました。・5月5月にはいちょう祭があり、OUCCの模擬店では、唐揚げや焼き鳥を販売しました。展示では、部員が作ったゲームを多くのお客様にプレイしていただきました。この時期あたりで、部員やOBさんが新入生に向けて講習会を開き、講習会に興味のある新入生や部員が講習会に参加しました。(※注)春の講習会の画像は去年のものです・6月6月には確定新歓が行われ、新入生は晴れて正式な部員となります。去年の確定新歓では、部室でたこ焼きやお菓子を食べながら、新部員と既部員がテレビゲームやボードゲーム、雑談等をして交流しました。OUCCでは2D、3DCG班や競技プログラミング班、WEB班、等があり、各部員は興味のある班活に入って班での活動も行います。・7月7月は下旬にテストがあるので、上旬の部会で夏休みの各予定を決め、テスト休みとなります。・夏休み8月上旬にテストが終わったらいよいよ夏休みです!!私たちの部室は冷房設備がなく、夏場はサウナと化してしまうため、部員は基本在宅での作業を行います。基本的には個人個人でやりたいことをやりますが、人によっては班で活動したり、似たようなことをしたい同士で共同開発や勉強会を行います。略称で、関西の大学の情報系団体に所属する学生たちが交流を深める会です。マイコンクラブ等があります。よる講習会がありました。部員との交流ができます。KC3について詳しくはこちらからsdr・夏合宿(開発合宿)去年は夏合宿で福井に行きました!!この合宿は開発合宿ということで、2つのチームに分かれ、待ちかね祭に向けてゲームの開発を行い、最終日には各チーム制作物を発表しました。夏休みが終わり10月になるとまちかね祭の準備に向けて動き出します。まちかね祭が近づいてくると、模擬店の買い出しの確認をしたり、展示するゲームの開発によるデスマーチが発生したりします。まちかね祭当日は部員が一丸となって展示・模擬店を行います。・12,1月この時期になると部室は冷蔵庫並の寒さになるので、部室にこたつが導入されます。部員たちは、各々の開発を進めたり、課題やテストに追われたりと思い思いのことをします。・春休みテストが終わり冬休みになると、部員はバイトをしたり、旅行に行ったり、勉強・開発したりと、それぞれ自分のやりたいことをやります。4回生の追いコンも開催しました。(今年は新型コロナウイルスの影響で、追いコンは3,4回生のみでの開催となりました)追いコン(画像はイメージです)・まとめ以上がOUCCのおおまかな活動内容となります。主な活動曜日は金曜日ですが、部室にはいつでも入れるので、金曜日以外に来て作業をする人もいます。月に1回ある部会もオンラインでの参加が可能なので、部室に来れない人でも参加できます。これまで見てもらった通り、このクラブは活動日を柔軟に決めることができ、他のサークルとの掛け持ちも可能です。今回は大まかな紹介のみとなりましたが、興味のある人はOUCCのTwitter等を見れば今後の活動が分かると思います。・最後にこのクラブに限らず、サークルや部活に入ることは、他学科の人との交流や大学生活を何かに打ち込むという点で大変良いものなので、自粛期間がおわり各サークルが新歓を始めたら、いろいろなところを見て回ることをおすすめします。アドベントカレンダーOUCCの主な活動を振り返るにコメントif文をすっきりさせるちょっとしたプログラム記述方法を紹介しようと思います。次のようなメソッドを記述したとします。}このif文は必要でしょうか?こんなことを聞くからには、もちろんNoです。if文が必要ないというのは語弊があります。正確には、処理をif文で囲む必要はありません。次のメソッドは全く同じ動作をします。}xが奇数の時、つまり偶数でないとき、return命令によってメソッド処理を終了させます。位置に達したときはxが偶数であることが確定しているので、if文による確認を行わず処理を記述することができます。この記述方法のうれしいところは、鍵かっこで処理を囲む必要がなくなるところです。例では処理は1行しかありませんが、これが何十行と続くと、最後にぽつんと}が残ることになり、どの鍵かっこと対応しているのかわかりにくくなってしまいます。鍵かっこを使わないpythonのような言語であっても、インデントが右にいきすぎてしまい、プログラムが見にくくなること必至です。}この記述方法の問題点は、if文の条件がわかりにくくなることです。xが偶数の時処理をしたいのに、if文の条件式は否定である「xが奇数であるか」の確認を行っています。人によっては処理の流れが追いづらいと感じたり、条件によっては否定の記述が難しい場合があります。1つ前の例では、順にメソッドの条件を満たした場合処理をし、次の確認事項を調べて・・・という流れがわかると思います。この記述方法で書いた場合は次のようになります。}インデントやかっこは見やすくなりましたが、何となくどういう場合にReturnBooleanMethod4()の確認を行うのかわかりにくいですよね?少なくとも僕にはわかりにくいです。メソッド内の最初と最後以外でreturnによって抜けると、処理していると思っていたコードが、実はその前にreturnしていて処理していない!ふざけんな!というような事態になったりするので注意です。この記述方法は、メソッドだけでなくforループからの脱出(break,continue)でも使えます。ような場合にも、breakする条件を記述することで、そのあとの処理をif文で囲む必要がなくなります。elseが消えてますよね。次のコードはbreak文の例を紹介するためだけに書いたどうでもいい動作をするプログラムです。}{}で1行とらないような記述方法をとるなら行数は変わりませんが、処理が複数ある場合は{}で1行とる人がほとんどだと思うので、そこそこ使えると思います。プログラムの見やすい記述方法、書きやすい記述方法は人それぞれだと思います。自分に合った記述方法でデバッグをしやすい、ストレスのたまらないプログラムを書きましょう。・~あらすじ~クリスマスではないけど、一応アドベントカレンダーの名目で二日目の記事書かせてもらいますOUCCの2DCG班長です。最初は適当にunityの音声認識の記事でも書いてやり過ごそうと思ってたんですが、一日目の先代の部長が結構頑張ってたんで、それを見て急遽書く内容変更して、一日で出来るけどそこそこ難易度のあるテーマを考えました。シートン学園を見ながら3時間くらい悩んだ結果、PCの隣にあったMONO消しゴムのデザインがエストニアの国旗に似ているな~とふと気が付いて、現在に至ります。消しゴムの青いところを取得コードが300行あって説明が大変なので要点をかいつまんで書きます。読んでも幸せになれない可能性があるので、青い鳥をお探しの方は結果まで飛ばした後、AMAZONにお買い求めください。※実行環境はwindows10、Python3.8で、使用ライブラリはOpenCVとNumPyです。↑(これは白い部分の中に散見される黒い所を出来れば除去したいなという希望でやってます。・各々の輪郭についてcv2.contourAreaで輪郭領域内の面積を求め、小さすぎる領域や、大きすぎる領域を除外。・一面真っ黒の画像をnp.zerosで生成。・cv2.momentsで輪郭で囲まれた各領域の重心を求める。・cv2.floodFillで先ほど輪郭を描画した画像について重心を含む領域を塗りつぶし。・塗りつぶし画像のnp.averageが大きければ塗りつぶし失敗なので、cv2.bitwise_notで反転。・こうして作成された塗りつぶされた画像(輪郭の数だけ存在)と輪郭情報をペアでリスト(名前:blue_area)に格納。・消しゴムの黒い部分に関しても同様にして、リスト(名前:black_area)に格納。MONO消しゴムを判別MONO消しゴムは青から少し離れて黒の領域があるという性質を利用して消しゴムの柄の場所を特定していきます。・black_areaとblue_areaの要素の全ての組み合わせについて、12つの塗りつぶされた画像の膨張を前述のdilateで行う。2cv2.bitwise_andで重なった領域を取得する32つの画像の重なった領域がnp.averageが0より大きいかを見て存在を確認し、存在すればその組み合わせを除外(一つの消しゴムの青い領域と黒い領域が接することは無いため。)4np.concatenateで2つの輪郭領域情報のリストを結合する。5cv2.minAreaRectで二つの領域に外接する最小の長方形を取得。62つの塗りつぶされた領域の面積を前述の方法で求める。7長方形の面積を求める。8長方形の面積が塗りつぶされた面積に対し比較的大きかったり小さければその組み合わせを除外(青と黒の領域が離れている組み合わせを除外)9除外されずに残った組み合わせの先ほど作成した長方形を保持。青い部分の抽出された画像(blue_areaの要素の一つ)と黒い部分の抽出された画像(black_areaの要素の一つ)をOR演算で合成し、外接矩形を表示した画像。心の清い人には外接しているように見えるはず。長方形の面積が白い部分の面積より比較的大きいため、この組み合わせは正しくないと判別する。・保持された全ての長方形と保持された他の全ての長方形との組み合わせしていき、一方の長方形がもう一方の長方形にほとんど含まれているとき、大きい方の長方形を除外。↑この判別法は、長方形の領域を塗りつぶし、AND演算を行って重なった部分の比率がどれくらいあるかで判別しています。・残った領域一つ一つについて、その領域の部分だけをマスキングして切り取る。(読み込んだ画像と長方形の中身を塗りつぶした画像のAND演算)↑なお、この過程で次元の低い長方形塗りつぶしの画像はcv2.COLOR_GRAY2BGRで3次元に変換。・hitomatagiさんのコードにかけて特徴量マッチングし、コード中のgoodの個数がある一定水準を超えないものを除外。特徴点を結んでいった画像ここまでクリアしたものををMONO消しゴムと認定します。MONO消しゴムをイタリア化ここから色付けをしていきます。...とその前にもう3時近いので寝ます。おやすみなさい~おはようございました。記事を書いていたのは夢落ちではないそうですね。...・各長方形を塗りつぶした画像と読み込んだ画像の青い部分を取得した画像のANDを取る。・AND演算して出来た画像の白い部分が存在するピクセルの座標と、同じ座標の読み込まれた画像の場所の色を緑に変更。完成!・結果イタリアと化したMONO消しゴム他の画像での実行結果とても精度が悪いですね。影は仕方ないとしても、文字の部分や、ノイズは頑張ればどうにかなる部分です。作者は途中で力尽きました。・コードRTAして書いたコードなので絶対見ない方がいいですよ。コード整理をしてなくてもOKで、呪い耐性がある方だけどうぞ。