カメラの設置位置決めが、カメラが小さいのでかなり難しそう。

被検査物の設置場所も、それほど正確にできないだろうし。

ということで、monicaの回答を参考に、トリミングを追加した。

     sg.Frame('', [[sg.Text('トリミング480  なし:0<==>500:MAX  4656-2n')],
                   [sg.Slider((0, 500), 0, 50, orientation='h', key='SLIDER_TY1', enable_events=True)],
                   [sg.Text('トリミング380  なし:0<==>500:MAX  3496-2n')],
                   [sg.Slider((0, 500), 0, 50, orientation='h', key='SLIDER_TX1', enable_events=True)],

まずは、両側を決め打ちで、同量削っている。

        ret, frame01 = cap.read() # BGR
        asyncio.run(asyncio.sleep(2)) # 撮影2秒待ち/2秒入れないと前の画像が残る
        # トリミング処理
        TY1 = int(values['SLIDER_TY1']) # トリミングスライダーYの読み込み
        TX1 = int(values['SLIDER_TX1']) # トリミングスライダーXの読み込み
        TY2 = CAY1-TY1
        TX2 = CAX1-TX1
        ut_now = datetime.datetime.now()
        print(ut_now, TY1,TX1,CAY1,CAX1,TY2,TX2)
        frame1 = frame01[TY1:TY2, TX1:TX2]

結構簡単に出来て、特に問題なく動作しているようなのだが、被検査物のどこらへんから切り取れているか、これではわからない!!!


切り取り位置を赤線で表示して、切り取り位置を調整してから切り取るようにする、ことを検討したが、

 表示設定のタイミングをとりづらく、

 私の力量では1つのプログラムでキレイに作りにくい、

 毎回設定するようなものでもない、

ことから、トリミングは別のプログラムで切り取り位置を確認しながら設定できるようにし、設定ファイルを保存して、設定ファイルを本プログラムで読み込んで動かす方が良さそうだ。

ついでに、FullHDとHD画面の切り替えもsliderで設定できるし、

今後800万画素で半分のサイズの検査もできるセットも予定しているので、カメラ解像度の切り替えもできるようにしておきたい。


他に、欠点の四角枠表示は、赤の被検査物の場合に、赤線は無いだろうとの考えに至ったが、こちらは本プログラムで水色ぐらいに切り替えられるようにしようかな。


しかし、iniファイルの読み書きは、Webやmonicaで調べても拒否感が出て理解しにくいので、配列をファイル保管する方向で、再度調べなおし、設定プログラムを作成することにした。





コメント

このブログの人気の投稿