本格的な検査プログラム作成に入る前に、以前作成したベースシートの検査プログラムのbeep音をmultiprocessing化できないかとチャレンジしてみた。 いろいろ調べて試してみたが、 if __name__ == '__main__': を使用しないとダメみたいで、使用しないとプログラムが2重起動、3重起動しようとする誤動作を起こす。 手抜きで、 if __name__ == '__main__': を使用したプログラムへの修正をAIに質問しようとしても字数制限がきつく、かなり削って質問して出てきた答えが、今までのプログラムを1つの関数としてしまうとんでもない答えだった。 手作業で書き換えるのは大変だし、必要性もほとんど無いので、beep音のmultiprocessing化を断念した。 マッチングの時にThreadPoolExecutorでの並列化は使ったが、質問の答えをそのままコピーしただけで、全く理解していないし・・・ 次のプログラムは、最初からmultiprocessing化を想定して、 各処理を極力関数化し、最初から if __name__ == '__main__': を使ってメインプログラムを構成することで、自分で理解できる範囲でこつこつと作成していこうと思う。
投稿
2月, 2024の投稿を表示しています
- リンクを取得
- ×
- メール
- 他のアプリ
間違い探しに関しては、グレースケールにしてから比較し、違いの部分を閾値判定で2値化する方法がWebで紹介されているが、色の判定に難がある傾向がみられた。 そこで、それぞれの画像をR、G、Bに分けてから、RとR、GとG、BとBを比較し、違いの部分を閾値判定で2値化してから合成する方法を検討した。 R、G、Bそれぞれの2値化は簡単に出来たが、統合に手間取った。AIに質問しても、まともな答えが返ってこない。 Rに統合したいのに、RGB画像にしてからGBを消してRのみにする答えしか返らない。 RGB別の画像を表示しても、きちんとできており、全く問題無いのに統合ができない。 # RGB別の画像を表示する関数 def display_images3 ( title , binary_r , binary_g , binary_b ): ut_now = datetime . datetime . now () print ( ut_now , 'RGB別の画像を表示' ) # 画像を表示用にリサイズ resized_image_r = cv2 . resize ( binary_r , ( 600 , 600 )) resized_image_g = cv2 . resize ( binary_g , ( 600 , 600 )) resized_image_b = cv2 . resize ( binary_b , ( 600 , 600 )) # 結果表示用のウィンドウを作成 layout = [ [ sg . Text ( title )], [ sg . Image ( data = cv2 . imencode ( '.png' , resized_image_r )[ 1 ]. tobytes ()), sg . Image ( dat...
- リンクを取得
- ×
- メール
- 他のアプリ
縦横比を無視してリサイズする画像表示関数のコードはこちら。 # 画像を表示する関数 def display_images ( title , image_a , image_b ): ut_now = datetime . datetime . now () print ( ut_now , '画像を表示' ) # 画像を表示用にリサイズ(仮:縦横比無視) resized_image_a = cv2 . resize ( image_a , ( 900 , 900 )) resized_image_b = cv2 . resize ( image_b , ( 900 , 900 )) # 画像を表示 layout = [ [ sg . Text ( title )], [ sg . Image ( data = cv2 . imencode ( '.png' , resized_image_a )[ 1 ]. tobytes ()), sg . Image ( data = cv2 . imencode ( '.png' , resized_image_b )[ 1 ]. tobytes ())], [ sg . Button ( 'Exit' )] ] window = sg . Window ( 'Image Display' , layout , size = ( 1900 , 1050 ), location = ( 0 , 0 )) while True : event , _ = window . read () ...
- リンクを取得
- ×
- メール
- 他のアプリ
AKAZEを使用した、若干異なる2つの画像を合わせるプログラムと、画像を合わせた後の間違い探しのプログラム、別々に開発を始めた。 Webに公開されているコードと、AIに質問した結果を参考に、候補を絞りつついろいろ試している。 AIは、いろいろ説明してくれたりしていいのだが、理解が及ばないこともあり、使い方が難しい。 wrtnで、2時間限定でGPT-4が使用できるようになり、GPT-3.5より参考になる答えが出るようになったが、平日は30分ほどしか使用できず、若干修正しようとしたらだんだん動作しない方向に外れていく傾向は同じで、なかなか進まない。 小さな画像はいいのだが、大きな画像をリサイズしての表示は、本当に外れていく。 結局、縦横比無視の以前使用していたリサイズ方法で仮に進めている。 マクセルフロンティア株式会社様の画像認識の技術ブログが、わかりやすく、間違い探しコードの理解をするのに、非常に役にたちました。 https://www.frontier.maxell.co.jp/blog/index.html ありがとうございました。
- リンクを取得
- ×
- メール
- 他のアプリ
HBVCAM-8M1824U3 V11 (前のV13は、V11の間違いでした) 最大解像度の3264x2448で撮影できない件、やっと対処療法ができて3264x2448での写真撮影もできた。 何と、2回連続で解像度の指定を行うと、設定できた。なんでやねん! cap . set ( cv2 . CAP_PROP_FRAME_WIDTH , CAY1 ) #3264 CAY1 cap . set ( cv2 . CAP_PROP_FRAME_WIDTH , CAY1 ) cap . set ( cv2 . CAP_PROP_FRAME_HEIGHT , CAX1 ) #2448 CAX1 cap . set ( cv2 . CAP_PROP_FRAME_HEIGHT , CAX1 ) print ( " - CAP_PROP_FRAME_WIDTH: " , cap . get ( cv2 . CAP_PROP_FRAME_WIDTH )) print ( " - CAP_PROP_FRAME_HEIGHT: " , cap . get ( cv2 . CAP_PROP_FRAME_HEIGHT )) 後は、AIに質問したりして、いろいろ試したが、ことごとく設定に失敗した。 搭載している制御チップの性能が低くて処理が追い付かないということ??? フォーカス指定設定もたまにできない時があるけど、再現条件がはっきりしない。 まあUSB3.0の恩恵か、撮影スピードはELP-USB16MP01-L75より早いので、とりあえず検査ソフト開発のために使えそう。 IMX577+USB3.0のカメラモジュールが、AliExpressで入手可能になってきたけど、まだまだ高いのでこわくて手が出せない。収益の目途が付いてから、再検討しよう。 本当は産業用のカメラが欲しいけど、桁が1つか2つ上がりそうで、よほど収益の目途が立たないと、無理。