今日、久しぶりに、ブログの更新を連続して行っているが、これは現実逃避です。 実は、統合した検査プログラムを作成する前に、Pythonを3.11.4から3.12.2にアップデートしてから実施しようとしたところ、PySimpleGUIが4.60から5にアップデートしており、商用利用に開発者支払いの有料$99になったことが判明。 日本語自動翻訳して読み、VSCodeで動作チェックした限りでは、現状は、Python3.11.4+PySimpleGUI4.60で開発を進め、収入が得られると確定した時点で$99有料に移行し、ユーザーが使えるようにすればいいのですが、パッケージ化せずライブラリをバッチファイル.batでインストールしようとしていたため、ユーザーにインストール設定を任せたり、ユーザーがパソコンを買い替える必要が出た時に、どうなるのかよくわからない。 tkinterへの移行は、フォルダを開いて画像を読み込むコードはwrtn+Claude2.1で質問を繰り返してできたことはできたが、なぜできているか理解できないし、本プログラムは大きすぎて無理。 PySimpleGUI5の有料利用の、詳しい解説ページが出てきているのか?
投稿
3月, 2024の投稿を表示しています
- リンクを取得
- ×
- メール
- 他のアプリ
間違い探しプログラムだが、検査物によっては違い表現等が不適格なものがあると感じ、間違いの表現を増やすため、tex2eさんの間違い探しを組み込んでみた。 動作はするが、どの様な処理を行っているか、理解できない。 実際の検査物を前にした時に、使い物になる様に応用調整できるようになるんだろうか? 検査物によっては、データに対して比較検査する必要があると感じ、フォルダを開いて画像を読み込むコードをいろいろなAIに質問して作成した。 すぐ使える返答はなかったが、ちょっと手直しして質問しなおすと、Geminiの返答で使いやすそうなコードができた。 import PySimpleGUI as sg # ファイル選択ダイアログ def select_file (): filename = sg . popup_get_file ( "画像ファイルを選択してください" , no_window = True ) if filename is None : return None return filename # 画像を表示 def show_image ( filename ): image = sg . Image ( filename = filename , size = ( 800 , 800 )) layout = [[ image ]] window = sg . Window ( "画像" , layout ) while True : event , values = window . read () if event == sg . WINDOW_CLOSED : break # メイン処理 layout = [ [ sg . Butto...
- リンクを取得
- ×
- メール
- 他のアプリ
UV LEDテープは、3/15に入荷。 動作確認した。ちゃんと紫色に光って見える。 蛍光ペンを買ってきて、紙に線を引いて確認しても、線が光る。 紫色の光が邪魔になるかどうか。 USB3.0のIMX577のカメラとは、3/16に入荷。 基板の刻印が「WN-L2305K357」ではなく「AT-C0320X3 REV07」で、別物(別メーカー?)になっていたが、チップにヒートシンクが付いており、動作安定性の向上に期待。 動作確認は、特に問題無し。付属のUSB3.0ケーブルが0.3mと短いので、1mのUSB3.0延長ケーブルを介して動作確認しても、特に問題無し。 HBVCAM-8M1824U3 V11の時の経験が生きており、動作確認も短時間で済んだ。 品質は、HBVCAM-8M1824U3 V11にあった、白っぽいノイズ感が無くなりすっきりした画像になり、延長ケーブルを介したときの一時的なノイズが無くなり、良好。 露光-4での安定した連続撮影速度は、4FPSを確保できそう。 最悪0.5秒前の画像が出力されるかもしれないが、これぐらいであれば、許容できるはず。 M12レンズが100度だけが懸念だが、これしか売ってなかったし、とりあえず先送りにしよう。
- リンクを取得
- ×
- メール
- 他のアプリ
AliExpressでの注文は不正利用が怖いので、不正利用されてもダメージの少ないVプリカギフトで注文していたが、余分な費用が発生し、使い残しも発生するリスクがあった。 Vプリカが、Vプリカギフトにチャージできるようにリニューアルしたので、クレジットカードで入金しようとしたが、できない。 いろいろ制限があるみたい。 2月末、やっと休みが取れたので、信用金庫のインターネットバンキングを申し込んだが、15年ほど前にインターネットバンキングを申し込んでいたということで、解約しないと申し込めない、前の登録内容の記録がパソコンが変わり残っておらず前の登録を利用できない、次の休みは4月中旬にならないと取れそうにない、で断念。 そこでいろいろ調べ、PayPay銀行に口座を新たに開設し、手数料の不要な3万円単位で入金し、Visaデビットで支払うことで、リスクを3万円以下にすることとした。 3/2に申し込み、カードは到着したのに口座が使用できず、問い合わせしたりして、3/9にやっと使用できるようになった。 ローソンで3万円入金し、 解像度と速度のバランスが良いUSB3.0のIMX577のカメラと、白色検査に使用できないかとUV LEDテープを発注した。 https://ja.aliexpress.com/item/1005005671872485.html?spm=a2g0o.order_list.order_list_main.11.4e4d585aOorcbf&gatewayAdapt=glo2jpn https://ja.aliexpress.com/item/2037523901.html?spm=a2g0o.order_list.order_list_main.5.4e4d585aOorcbf&gatewayAdapt=glo2jpn
- リンクを取得
- ×
- メール
- 他のアプリ
加工前のシート検査プログラムをUSBカメラ(センサー)を選んで使えるように、Ver1.1にアップデートしてみた。 他の更新点は、 ThreadPoolExecutorでのBEEP音の並列化処理。 if SPK == 1 : beeps = [( 440 , 600 )] #単位は Hz 値は 37 から 32767,ms # ThreadPoolExecutorを使用して並列処理 with ThreadPoolExecutor ( max_workers = 3 ) as executor : for frequency , duration in beeps : executor . submit ( play_beep , frequency , duration ) if __name__ == '__main__': が必要ないので追加は容易だった。 センサー選択は、 セットプログラムで、 こんな感じで選択する。 [ sg . Text ( 'カメラセンサー IMX298,IMX577,IMX179 要再起動' )], [ sg . Slider (( 0 , 2 ), IMX1 , 1 , orientation = 'h' , key = 'SLIDER_IMX1' , enable_events = True )], フォーカス設定は初期値は200で、微調整設定。 ...
- リンクを取得
- ×
- メール
- 他のアプリ
HBVCAM-8M1824U3 V11、本当は何FPSで写真の連続撮影が可能なのか知りたいと 思い、FPS確認プログラムを作成してみたが、どうにも3回か4回撮影すると1秒の待ち時間が発生してしまい、3FPSになってしまう。 いろいろ試してみて、大ボケしていたことが判明。 cap . set ( cv2 . CAP_PROP_EXPOSURE , 0 ) asyncio . run ( asyncio . sleep ( 7 )) # 反映待ち 露光時間0=1秒、そりゃあ変な動作するわな! # 0=1s,-1=500ms,-2=250ms,-3=125ms,-4=62.5ms,-5=31.3ms,-6=15.6ms,-7=7.8ms,-8=3.9ms # -9=2ms,-10=976.6μs,-11=488.3μs,-12=244.1μs,-13=122.1μs,-14=61.5μs,-15=30.7μs,-16=15.3μs 露光時間を-4を予定すると0.1秒程度の時間待ちが必要か。 import os import cv2 import numpy as np import datetime import asyncio # プログラム全体を止めない非同期待ち時間指定用、asyncio.run(asyncio.sleep(4)) で4秒待ち os . environ [ "OPENCV_VIDEOIO_MSMF_ENABLE_HW_TRANSFORMS" ] = "0" #カメラ起動の短縮 def print_camera_properties ( CAMERA_ID ): print ( "カメラプロパティ:" ) print ( " - CAP_PROP_FRAME_WIDTH: " , cap . get ( cv2 . CAP_PROP_FRAME_WIDTH )) print ( " - CAP_PROP_FRAME_HEIGHT: " , cap . get ( cv2 . CAP_PROP_FRAME_HEIGHT )) # 撮影回数設定 time_n = 30 image_path = ...
- リンクを取得
- ×
- メール
- 他のアプリ
HBVCAM-8M1824U3 V11、マニュアルフォーカス指定が不安定で反映されず、フォーカスを動かして反映されることが多かった。 いろいろ試してみて、改善できた。 import cv2 import asyncio # プログラム全体を止めない非同期待ち時間指定用、asyncio.run(asyncio.sleep(4)) で4秒待ち cap = cv2 . VideoCapture ( 0 ) cap . set ( cv2 . CAP_PROP_FRAME_WIDTH , 3264 ) cap . set ( cv2 . CAP_PROP_FRAME_HEIGHT , 2448 ) cap . set ( cv2 . CAP_PROP_FRAME_WIDTH , 3264 ) # IMX179用 cap . set ( cv2 . CAP_PROP_FRAME_HEIGHT , 2448 ) # IMX179用 width = int ( cap . get ( cv2 . CAP_PROP_FRAME_WIDTH )) print ( "width = " + str ( width )) height = int ( cap . get ( cv2 . CAP_PROP_FRAME_HEIGHT )) print ( "height = " + str ( height )) ret , frame = cap . read () # オートフォーカスを無効にする cap . set ( cv2 . CAP_PROP_AUTOFOCUS , 0 ) #cap.set(cv2.CAP_PROP_AUTOFOCUS, 0) # IMX179用 # マニュアルフォーカスの値を設定する # この値を調整することでフォーカス位置を変更できます focus_value = 0 cap . set ( cv2 . CAP_PROP_FOCUS , focus_value ) asyncio . run ( asyncio . sleep ( 1 )) # 反映待ち while True : ret , frame = cap . read () ...