とあるメーカーエンジニアの趣味備忘録

Python, マイコンいじり, 日々の呟きなど

OpenCV 自分用メモ・覚え書き

RGB画素・グレースケール画素の定義

RGB画素、グレーススケール画素は共に色情報を8ビットで表現している。 すなわち、赤・緑・青・白黒の濃淡度合を28-1 = 256段階で分けており、0 - 255 の数値で指定する。

  • RGB画素
    RGB画素は画素値が大きいほど濃い色を表現する。
    例えば、(R, G, B) = (255, 0, 0) は最も濃い赤色を表し、(R, G, B) = (0, 255, 0) は最も濃い緑色を表す。
    よって、(R, G, B) = (255, 255, 255) は赤・青・緑の最も濃い度合を混色していることを意味し、黒色を表現することとなる。
    逆に、(R, G, B) = (0, 0, 0) は全色の最も薄い度合を混色することとなるため、白色を表現することとなる。

  • グレースケール画素

    f:id:makutsueeken5:20210811144143g:plain
    グレースケール画素の画素値と色の対応図

上に載せた写真(デジタル画像 - IGUNOSS,Inc.より引用)が示すように、グレースケール画素は画素値が大きいほど白に近く、画素値が小さいほど黒色に近い色を表現する。

ピクセル数に基づいた大きさで画像を表示したい場合

ウィンドウサイズの指定において、cv2.WINDOW_AUTOSIZE を指定すればよい

cv2.namedWindow("Original image", cv2.WINDOW_AUTOSIZE)
閾値処理 cv2.threshold の第4引数に指定するフラグについて

閾値処理を行う関数 cv2.threshold の引数は
第1引数は対象となる画像データ
第2引数は閾値(0~255)
第3引数は閾値以上のデータに割り当てる最大値
第4引数は閾値の判定処理方法を指定するフラグ
となっている。 第4引数の判定処理方法については、例えば・閾値以上のデータには最大値を割り当て、それ以外は0を割り当てる、や・閾値以上のデータには0を割り当て、閾値以下のデータに最大値を割り当てる、等の割り当て方を指定するということとなる。
具体的には、次のようなものが用意されている。

  • cv2.THRESH_BINARY
    閾値より大きいデータには最大値を割り当て、閾値以下のデータには0を割り当てる。
  • cv2.THRESH_BINARY_INV
    閾値より大きいデータには0を割り当て、閾値以下のデータに対しては最大値を割り当てる。
  • cv2.THRESH_TRUNC
    閾値より大きいデータは閾値を割り当て、閾値以下のデータはそのまま。
  • cv2.THRESH_TOZERO
    閾値より大きいデータはそのままの値で、閾値以下のデータには0を割り当てる。
  • cv2.THRESH_TOZERO_INV
    閾値より大きいデータには0を割り当てて、閾値以下のデータはそのまま。

tkinter 自分用覚え書き【Python, tkinter】

こんにちは、限界理系大学院生です。
最近、Python を触っていてやっぱり GUI 開発をしてみたくなってきました。
というのも、現在家計簿の集計計算プログラムを開発したのですが、コンソールプログラム状態では気に入らない点がいくつか出てきてしまったからです。
例えば、

  • 実行するためにコマンドプロンプト等コンソールを開く手間を要する
  • 実行するために長いパス名を入力 or 配置ディレクトリへの移動が必要
  • 処理対象のファイル名の指定や処理内容の指定条件の変更に際してコードをいじる必要がある

等が挙げられます。
そこで、いよいよ GUI 開発に挑戦してみようということで tkinter を利用することにしました。
今回の記事は、自分用の備忘録として tkinter を利用していく中で調べた内容等をここに記載していこうと思います。

ボタンを押した際のイベント処理に関して

Buttonオブジェクトの .bind メソッドを利用します。 以下のように、.bind("クリック処理", 関数) と記述することで、指定したクリック処理と処理される内容とを紐づけることが可能です。

button = tk.Button(text='ボタン', width=30)
button.place(x=90, y=120)
button.bind('<Button-1>', outputWords)

上の例において"クリック処理" は "<Button-1>" であり、これはマウスの左クリックに相当します。
それでは、他のクリック処理はどう記述する必要があるのかを以下にまとめていきます。

  • <Button-1> : 左クリック
  • <Button-2> : マウスの真ん中のボタンクリック
  • <Button-3> : 右クリック
  • <Button-4> : スクロールアップ
  • <Button-5> : スクロールダウン

参考文献

PythonのTkinterを使って簡単なGUIプログラムを作ってみた - Qiita

GUI Programming with Python: Events and Binds

Pyxelを使ってみた&自分用メモ

PythonGUI 系の開発をすると言うと私が思いつくのは

  • tkinter
  • 専用フレームワーク
    ぐらいしか頭になく、自分の中では PythonGUI 開発には不向きだという印象を抱いていました。 しかし、最近 Pyxel というライブラリを見つけました。

Pyxel (ピクセル) はPython向けのレトロゲームエンジンです。 使える色は16色のみ、同時に再生できる音は4音までなど、レトロゲーム機を意識したシンプルな仕様で、Pythonでドット絵スタイルのゲームづくりが気軽に楽しめます。 (以下HPより引用) github.com

いや~素晴らしいですね。 有難いことにこのライブラリの作者が日本人のようなので、日本語のドキュメントが用意されており、非常に助かります。

このライブラリについて、ドキュメントでの紹介としては「レトロゲームエンジン」として利用できる点を押し出しておりますが、それ以外の利用も十分に可能です。 例えば、動作が非常に軽いことから高速グラフ描画等にも利用できると考えております。

以下では、Pyxel を利用していて個人的に調べた内容のメモを記載していきます。

  • デフォルトの FPS (フレーム切り替え速度)
pyxel.DEFAULT_FPS # = 30
  • キーイベントの判定処理 例えば左十字キーの押下判定をしたい時、以下の記述では当たり判定がされない。
if pyxel.btn(pyxel.KEY_LEFT) is True:
    print("LEFT!")

調べてみたところ関数 btn からの返却値の型が bool 型ではなく int 型であった。 型違いにより判定処理結果が False となってしまったと考えられる。
そのため、以下のように記述するのが正解

if pyxel.btn(pyxel.KEY_LEFT):
    print("LEFT!")

大学院でうつ病を発症しました

f:id:makutsueeken5:20210728112748p:plain

こんにちは、限界理系大学院生Mです。
記事の更新は約3年ぶりとなります。 というのも、前回の記事の投稿後に大学の研究室に配属されて忙しくしていたからです。 現在は大学を無事卒業し、大学院生をやっております。 今回はそんな研究室にまつわる私の現状について書こうと思います。

単刀直入に言うと、大学院でうつ病を発症させてしまいました。
まあ、「大学院生×うつ病」は割とよく聞く話なのですが、やはり当事者となってみると辛いものです。 自分用の備忘録といった意味合いも含めて、以下では次の内容について書いていきます。

  1. どうしてうつ病を発症するに至ったのか
  2. どんな症状に悩まされているのか
  3. どのように治療しているのか

少し長くなりそうですが、お付き合いいただけると幸いです。

1. どうしてうつ病を発症するに至ったのか

f:id:makutsueeken5:20210728112752j:plainf:id:makutsueeken5:20210728112743p:plain

原因は一つに絞ることはできないのですが、オーバーワーク、自分自身に厳しくしてしまう癖、孤独な環境、就職活動、等々がタイミング悪く重なってしまったことが原因だと考えています。
企業との共同研究のテーマを担当しており、しかも研究室のマンパワー的な都合からそれを自分一人が背負うことを余儀なくされておりました。 これが自分の中でもかなりのプレッシャーとなっていたのですが、そこにコロナ禍の慣れない就職活動での苦戦が重なりました。
なんやかんや就職活動は無事終わり、研究も何とか進めていたのですが、知らず知らずのうちに蝕まれていたようで対人恐怖症を発症してしまいました。
その後、研究室にも時々行けなくなってしまい、心療内科を受診したところうつ病と診断を受けました。

2. どんな症状に悩まされているのか

自分自身が意識できるような症状としては対人恐怖症が主でした。
しかし、自分では意識できていない軽い症状が出ていることも指摘されたことによって判明しました。
出ている症状を列挙すると次のようなものが挙げられます。

  • 対人恐怖症
  • 鬱状態
  • 集中力の低下
  • 神経質になってしまう
    • 部屋の掃除をすごく細かくしてしまう(元はそんなに綺麗好きではない)
    • 部屋の片づけを異常にしてしまう(元は結構ルーズでおざなり)
    • 歯を完璧にきれいにしたくて歯磨きを30~40分してしまう
    • 歯の汚れを落としたくなって爪楊枝を10~20本無意識に使ってしまっている
  • 変な癖?がついてしまった
    • 貧乏ゆすり
    • チックのような症状(強く瞬きしてしまう)
  • 人に気を遣いすぎてしまう
  • 研究室からの連絡メールに異常に敏感になり、恐怖を感じる(メールの着信音だけでビクビクしてしまう)
  • 心配性が加速した
  • 完璧主義

うつ病」と言われてそれっぽい症状から、傍からみると笑ってしまうような変な症状まで出ています。 ただ、大学院に入るまではこれらの症状は出ておらず、この病気由来の症状なのかなと考えております。 要するに、結構気づきにくいような兆候として鬱の症状は出てしまうので、酷い状態になるまで自分自身でも気づくことができないのかもしれません。

3. どのように治療しているのか

心療内科の医師曰く、とりあえず環境を変えるしか治療法はないみたいです。 そのため、現在はしばらく研究室にお休みを頂いて研究とは関係のないことをしています。 (というより、「研究をしない」ということが治療にも繋がるのであえて研究に関係することはしないようにしています。)
また、症状を和らげるという観点からお薬を処方頂きそれらを服用しております。

以上、今回の記事では備忘録も含めて現状と病気の症状について書きました。
特にここで記載した症状については数か月後に振り返ってみて、それぞれどの程度改善されているのかということも確認してみたいと思っています。

GCP+Wordpressを使ってホームページを作ることになった.

サークルのホームページを作ることになってしまって,GCPWORDPRESSを使って作ることにした.

今回は,それに用いた参考文献リストである.

stpost.net

webird-programming.tech

yongjinkim.com

qiita.com

qiita.com

qiita.com