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を使っても遅いプログラムしか書けないことがある程度かな。



コメント

このブログの人気の投稿