teratailでの質問の結果は、
カメラ撮影してPillowで書き込んだ画像をリサイズして表示更新したい
それなりに動くようになって確認できたことは、次の通り。
Numpyデータのままでは、Pillowでsave保存できない。
OpenCVとNumpyとPillowの変換時に、RGBとBGRの並びが変わったり変わらなかったりする。
BGRの並びの時に、Pillowで赤枠でBに書き込んだため、RGBに戻して表示更新すると青枠になっていた。
青枠で書き込み、RGBに戻して表示更新すると赤枠になり、本来の目的の色で正常に表示される。
(RGBに戻してからPillowで赤枠を書き込み、表示更新してもよさそう。)
処理毎に、RGBなのかBGRなのか、把握しておく必要があるため、処理の後ろに、#RGB、#BGR、#RGB=>BGR、などとコメントを入れて、間違えないようにした方が良い。
更にチェックしていくと、
#BGRなどとコメントを入れていくと、平均値の計算部分もBGR用に修正していないことにも気づいた。
被検査物を半分撮影範囲に入った状態で、間違って検査開始ボタンを押してしまうと、全面塗りつぶし描画になり、1分程度無反応になってしまう問題も発見できた。
PillowでBGRからRGBへの変換ができない。
無反応時間の短縮には、
欠点の検出数を制限してエラー判定し、四角の書き込みをやめる。
Numpyで高速に四角書き込みする。
方法を思いついたが、
検出数制限では、どの程度の数で止めたらいいか、入れ子が複雑でも作成できるか?
今回は画像の保存は必要ないが、次予定で画像を保存する必要が出てくる可能性がある。
画像保存等でNumpyとPillowを行き来すると、プログラムが複雑になる。
ことから、Numpyで高速に四角を書き込めれば、無反応時間が短くなり検出数制限が必要なくなるし、画像保存も簡単になるし、プログラムが簡単になるし、いいことずくめでは?
と思いチャレンジしてみることにする。
問題は、Numpyを使っても遅いプログラムしか書けないことがある程度かな。
コメント
コメントを投稿