検査に進む前に、流れの確立を下記の様なコードを1セットとして実行しようとしているのだが、うまくいかない。 Space押す cap.set(cv2.CAP_PROP_EXPOSURE, -3) device2.write(RELAY_ON_CMD21) #LED ON、LED保有1個なので今はダミー time.sleep(2)安定化待ち ret, frame = cap.read() #4656x3496 frame_resized = cv2.resize(frame, (1280, 1024)) #リサイズ1280x1024 window['-IMAGE-'].update(data=cv2.imencode('.png', frame_resized)[1].tobytes()) #画像の更新 time.sleep(1) # 1=1秒、点灯状態を視認しやすくする■■割愛可■■ device2.write(RELAY_OFF_CMD21) #消灯 cap.set(cv2.CAP_PROP_EXPOSURE, -4) device2.write(RELAY_ON_CMD22) #LED ON、実際に点灯 time.sleep(2)安定化待ち ret, frame = cap.read() #4656x3496 frame_resized = cv2.resize(frame, (1280, 1024)) #リサイズ1280x1024 window['-IMAGE-'].update(data=cv2.imencode('.png', frame_resized)[1].tobytes()) #画像の更新 time.sleep(1) # 1=1秒、点灯状態を視認しやすくする■■割愛可■■ device2.write(RELAY_OFF_CMD22) #消灯 画像の更新を2回するはずが、なぜか1回しか更新せず、更新した画像も ・ダミーの点灯無し ・点灯あり ・点灯無しと点灯ありの混じったもの と、わけがわからない。 単に上書き更新を繰り返したいだけなのに。
投稿
9月, 2023の投稿を表示しています
- リンクを取得
- ×
- メール
- 他のアプリ
昨日、不気味な現象が発生した。 winsoundを使って、ビープ音を何Hzにしようかとチェックしていたところ、ビープ音が終わった直後に、音楽が鳴りだした。 それも、きらきら星。 プログラムを記すが、どこにもそのようなものは無い。 # Python 3.x import winsound import time frequency = 250 #単位は Hz 値は 37 から 32,767 duration = 500 #ms winsound . Beep ( frequency , duration ) time . sleep ( 1 ) frequency = 440 #単位は Hz 値は 37 から 32,767 duration = 500 #ms winsound . Beep ( frequency , duration ) time . sleep ( 1 ) frequency = 500 #単位は Hz 値は 37 から 32,767 duration = 500 #ms winsound . Beep ( frequency , duration ) time . sleep ( 1 ) frequency = 1000 #単位は Hz 値は 37 から 32,767 duration = 500 #ms winsound . Beep ( frequency , duration ) time . sleep ( 1 ) frequency = 2000 #単位は Hz 値は 37 から 32,767 duration = 500 #ms winsound . Beep ( frequency , duration ) time . sleep ( 1 ) frequency = 3000 duration = 500 winsound . Beep ( frequency , duration ) time . sleep ( 1 ) frequency = 4000 duration = 500 winsound . Beep ( frequency , duration ) time . sleep ( 1 ) frequency = 5000...
- リンクを取得
- ×
- メール
- 他のアプリ
PySimpleGUIで文字が真っ黒になる問題の件 Teratailに質問を投稿 した結果、 とりあえず、timeout=の時間を長くすれば応急処置ができそうな兆しが見えたので、この問題の改善は、一旦終了する。 # 起動中ウィンドウのレイアウトを定義 sg . theme ( 'LightGreen' ) # 画面の配色テーマ layout = [[ sg . Text ( ' ' )],[ sg . Text ( '検査ソフト起動中' , font = ( 'Helvetica' , 20 ), justification = 'center' )], [ sg . Text ( ' ' )]] # タイトルバー無しの起動中ウィンドウを作成 window0 = sg . Window ( 'Window Title' , layout , no_titlebar = True , keep_on_top = True , finalize = True ) event , values = window0 . read ( timeout = 100 ) # timeout=10以上、文字が表示されなければ長くする
- リンクを取得
- ×
- メール
- 他のアプリ
検査プログラムの動作の遅さがネックと感じている。1人が複数の検査ユニットを使うことで、動作の遅さをカバーすることを検討開始。 Pushスイッチを押してすぐ離れても、隣のユニットから動作しているところが確認できるようにする。 キー入力したら、音が出て、動作状態の色のLEDランプが光り、キー入力が受け付けられ、動作していることが少し離れたところからもわかるようにするべく調査開始。 音は、windowsベースを予定しているので、 winsound でいいかなって。 調べても winsound がマルチスレッドに対応しているかわからなかった。 さしあたり、0.5秒程度のBeep音で音程を変えて実装し、気が向いたらファイル音源に挑戦することにした。 import winsound import time frequency = 250 #単位は Hz 値は 37 から 32,767 duration = 500 #ms winsound . Beep ( frequency , duration ) time . sleep ( 1 ) frequency = 440 #単位は Hz 値は 37 から 32,767 duration = 500 #ms winsound . Beep ( frequency , duration ) time . sleep ( 1 ) frequency = 500 #単位は Hz 値は 37 から 32,767 duration = 500 #ms winsound . Beep ( frequency , duration ) time . sleep ( 1 ) frequency = 1000 #単位は Hz 値は 37 から 32,767 duration = 500 #ms winsound . Beep ( frequency , duration ) time . sleep ( 1 )
- リンクを取得
- ×
- メール
- 他のアプリ
約1.5か月改善できなかった、キー認識に関する問題があった。 PySimpleGUIの方がTKinterよりシンプルなコードで簡単に組めそうと、PySimpleGUIでウィンドウを作り、Webでの情報を参考にマウスで操作する条件分岐処理が簡単に書けたので、当初予定の EHUASHINA USB カスタマイズ スイッチ SPACE のスペースキーを押すと撮影検査を1回処理するべく、キーボード入力での操作に変更しようとしてツボにはまった。 ついでにESCキーでのプログラム終了も実装しようとしている。 下記のようなコードを書いたが、キーを押しても認識されない。 ut_now = datetime . datetime . now () print ( ut_now , 'MAIN Start' ) while True : ut_now = datetime . datetime . now () print ( ut_now , 'KEY' ) event , values = window . read () # timeout=数字msキー入力待ち、(key, value)のタプル形式でイベントを受取 ut_now = datetime . datetime . now () print ( ut_now , event , values ) if event == sg . WIN_CLOSED : break elif event == 'Escape:27' : break elif event == ' ' : ut_now = datetime . datetime . now () print ( ut_now , 'Space' ) ウィンドウの右上の終了ボタン...
- リンクを取得
- ×
- メール
- 他のアプリ
PySimpleGUIで文字が真っ黒になる問題が発生 USBカメラの起動設定処理等に約17秒の時間がかかるので、その間に「ソフト起動中」の表示をしようしています。 import PySimpleGUI as sg import time 起動中ウィンドウのレイアウトを定義 sg.theme('LightGreen') # 画面の配色テーマ layout = [[sg.Text('検査ソフト起動中', font=('Helvetica', 20), justification='center')]] タイトルバー無しの起動中ウィンドウを作成 window = sg.Window('Window Title', layout, no_titlebar=True, keep_on_top=True, finalize=True) time.sleep(5) ウィンドウを閉じる window0.close() Fontを変えても改善せず。 プログラムに組み込んでも改善せず。 点滅表示にしてみると、真っ黒になりませんし、点滅後に表示したままにできないことはなかったのですが、起動中に点滅処理はできませんし、できるだけシンプルなプログラムにしたいと考え、点滅後に表示したままにするという方法はとりたくない。 なぜか次のコードを追加すると改善。 event, values = window.read(timeout=100) ウィンドウが狭いので上下にスペースを入れるとまた真っ黒になった。 Yahoo知恵袋に質問したが、回答つかず、削除された。 こんな簡単そうなことが、約1か月解決できずにいる。 とりあえず別の部分を進めるとし、event~を入れて、狭いウィンドウのままにしておく。 (9/24 Teratailに質問を投稿)
- リンクを取得
- ×
- メール
- 他のアプリ
USBカメラのWindows11での認識について USBカメラの無いデスクトップパソコン等では cap = cv2.VideoCapture(0) でUSBカメラを指定する。 内臓カメラ付きのノートパソコン等では cap = cv2.VideoCapture(0) 内臓カメラ cap = cv2.VideoCapture(1) でUSBカメラを指定する。 USBカメラを常時1台、 cap = cv2.VideoCapture(0) 1600万画素 たまに2台目を接続すると、 cap = cv2.VideoCapture(0) 200万画素 cap = cv2.VideoCapture(1) 1600万画素 となり、1台に戻すと、 cap = cv2.VideoCapture(0) 1600万画素 となる。 この入れ替わり条件は、確認したところ、次の通りと思われる。 ・過去にWindowsに認識させた順に、勝手に並べ替える。 ・Windowsが起動中に追加接続しても、 勝手に並べ替える。 起動後にUSB接続した順なんて関係ない。 ある意味、USBカメラの起動順なんて考える必要のない良い仕様ともいえるが・・・ Linux系やMacは、どういう挙動をしめすのだろう?
- リンクを取得
- ×
- メール
- 他のアプリ

Homyl 2チャネルUSBリレーモジュール 新たに入荷したリレーの制御チップはCH552Gで、 前のリレーの制御チップはTINY45で、やはり違っていた。 ARCELI SRD-05VDC-SL-C 2ウェイ5Vリレーモジュール 違ってるのは予定通りだが、TINY45のチェックプログラムを修正しても、CH552Gでは動作しない。 調べてみてもUSBリレーのHIDモードの規定は見つからない。 monicaで質問し、CH552Gで動くプログラムができたが、TINY45はそのプログラムで動作しない。 試行錯誤を繰り返し、2種類のリレーを似たような表現で動作させるプログラムができた。 各リレーモジュールのレビューに記載したが、コメントを追加したコードを記す。 import hid # HIDAPIライブラリ使用/HIDライブラリ使用不可(インストールしてはダメ) import time # リレーモジュールのVIDとPID VID1 = 0x 16c0 #制御チップTINY45 PID1 = 0x 05df VID2 = 0x 0519 #制御チップCH552G PID2 = 0x 2018 # リレーモジュール2を1よりもWin11に先に認識させると、正常に認識しないことがあり # 制御チップTINY45とCH552Gでは、左右が逆になるので注意 # リレーモジュール1の制御コマンド RELAY_ON_CMD11 = [ 0x 00 , 0x ff , 0x 01 , 0x 00 , 0x 00 , 0x 00 , 0x 00 , 0x 00 ] #制御チップTINY45 右 RELAY_OFF_CMD11 = [ 0x 00 , 0x fd , 0x 01 , 0x 00 , 0x 00 , 0x 00 , 0x 00 , 0x 00 ] RELAY_ON_CMD12 = [ 0x 00 , 0x ff , 0x 02 , 0x 00 , 0x 00 , 0x 00 , 0x 00 , 0x 00 ] #制御チップTINY45 左 RELAY_OFF_CMD12 = [ 0x 00 , 0x fd , 0x 02 , 0x 00 , 0x 00 , 0x 00 , 0x 00 , 0x 00 ] # リレーモジュー...
- リンクを取得
- ×
- メール
- 他のアプリ
8/3より、ChatGPTの無料版を利用開始。 質問の仕方が難しい上、入力を間違って質問した場合や、使う予定のないライブラリを使用した回答がついた場合も、再質問になり、回数制限に引っかかることがあった。 ほかにAI系の無料で質問できるものを探していると、monicaを見つけた。 8/12より、monicaの無料版を利用開始。 プログラムとして独立しているので、ブラウザの拡張機能のように、勝手に検索回答して上限に達し、質問したいときに質問できない、ということが無く良い。 質問できる数が30に増え、回答のチェックにもたもたしている私では、質問数の上限に達することがなくなった。 また、Webで独学するだけでは、進捗が遅すぎたり壁にぶつかり、ChatGPTやmonicaでは解決できない問題があると認識したので、Yahoo知恵袋での質問も開始。
- リンクを取得
- ×
- メール
- 他のアプリ
正常品が届かなかったUSBリレーモジュールとは別のモジュールを購入しました。 輸送中の事故が無いよう、国内の倉庫から発送されるものです。 本当は、4個のリレーを搭載したモデルが欲しいのですが、調べても外部電源が必要なのか、無くても動作するのかわからなかったので、相変わらずの2chリレーです。 USBリレーモジュール Amazon Customerさんのレビュープログラムで、動作させることができました。 ポイントは、import hidと書いてあるけれど、HIDライブラリをインストールしてはだめ、HIDAPIライブラリをインストールして、import hidと書く必要があることでした。 import hid # HIDAPIライブラリ使用/HIDライブラリ使用不可(インストールしてはダメ) h.open(0x16c0, 0x05df) # VID, PID のVIDとPIDは、 VenderIDとProductIDのことではないかと思い、デバイスマネージャーを開くと、表示されます。 え、これでは2個同じものを購入すると個別制御できない?!
- リンクを取得
- ×
- メール
- 他のアプリ
USBカメラの静止画撮影高速化と撮影画像の変動防止のため、 オートフォーカス無しのカメラを購入し、他の自動調整をOFF # カメラの自動露光調整をOFFに設定し、カメラの明るさを調整■■スキャン結果の揺れ防止■■ # 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 cap . set ( cv2 . CAP_PROP_AUTO_EXPOSURE , 0 ) cap . set ( cv2 . CAP_PROP_EXPOSURE , - 4 ) # ■■LEDの光量に応じて撮影時間を設定■■ # カメラの自動ホワイトバランス調整をOFFに設定■■スキャン結果の揺れ防止■■ cap . set ( cv2 . CAP_PROP_AUTO_WB , 0 ) 撮影時間の設定は、1処理毎に3回設定し直す必要があるが、ほとんど時間がかかっていないようだ。
- リンクを取得
- ×
- メール
- 他のアプリ
USBカメラの静止画撮影高速化の設定 公開していただいている情報を使わさせてもらっているものなど。 cap = cv2.VideoCapture(0)、 cap.set(cv2.CAP_PROP_FRAME_WIDTH, 4656) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 3496) の設定待ち時間が早くなる import os os . environ [ "OPENCV_VIDEOIO_MSMF_ENABLE_HW_TRANSFORMS" ] = "0" # カメラ起動の短縮 効果がよくわからない cap . set ( cv2 . CAP_PROP_BUFFERSIZE , 1 ) # OpenCVの遅延を短くする(初期値は4)(動画でないので効かない?) 最初の読み込みが遅いので、起動中に1回(捨て)読み込みしておく ret , frame = cap . read () # エラー無し時は約8秒、エラー発生時は約10秒を要す 5回撮影した画像を平均化してノイズ除去 #静止画像の平均化でノイズ除去、//で端数を切り捨て整数化して演算を高速化 frame000 = ( frame01 // 5 + frame02 // 5 + frame03 // 5 + frame04 // 5 + frame05 // 5 )
- リンクを取得
- ×
- メール
- 他のアプリ
ELP-USB16MP01-L75 、解像度は高いが、初期設定や撮影が遅い。 いろいろスキャン設定や、高速化設定を調べて試してみた結果がこちらのエクセルファイル。 https://docs.google.com/spreadsheets/d/1OMDUX6xHfTfEN8RvnbNrmBgG5Fdbe_vL/edit?usp=drive_link&ouid=107231639459382289168&rtpof=true&sd=true 1回目の撮影に約8秒かかるため、起動中にプレ(捨て)リードをかけ、検査本番想定で、5回撮影後・切り捨て平均化してノイズ除去・データ保存までを約6秒までに短縮できた。 しかし最終目標は、LED照明を切り替えつつ、3条件で撮影してそれぞれ欠点解析、欠点を合成して表示、まで進む予定なので、目標の20秒以内を大幅に超えそう。 MJPEGでの取り込みはなぜかできず、これ以上の高速化はできず。 撮影回数を減らすか、別のノイズを減らす方法を考える必要がある。
- リンクを取得
- ×
- メール
- 他のアプリ
発注品が、次々入荷した。 Lepro PR4100067-DW-JP-NF は、12Vなので明るく、発色も白で、調光器も設定しやすく、テーブルタップでON/OFFしてみても特に問題なし。調光後にリレーをつなぎ、リレー制御する予定なので、立ち上がり時間は評価しない。予定通りの性能で、GOOD。 サムコス LEDテープ 延長用 ワンタッチコネクタ は、コネクタ部分を開けにくいが、不意に外れることがなさそうなので、よし。 KEHUASHINA USB カスタマイズ スイッチ SPACE は、大きすぎず小さすぎず、押すとクリック感があり、カチカチ音がすし、スペースがパソコンに入力できた。 予定通りの性能で、GOOD。
- リンクを取得
- ×
- メール
- 他のアプリ

手元にあった200万画素のUSBカメラbsw20k07hで開発を進めようと思っていたが、カタログの最大解像度 1600×1200で静止画を読み込めず、1280x1024が最大と確認したので、捨てずに残している家族の古いスマホをUSBカメラとして使えないか、検討開始。 ZenFone Go ZB551KL-BK16 800万画素 3264×2448ピクセル ZenFone Max (M2) 1300万画素 4160x3120ピクセル AQUOS sense SHV40 1300万画素 4160x3120ピクセル iPhone 6 800万画素 3264×2448ピクセル 検査ソフトの開発でこけても、スマホアプリを開発できるようになったらいいな、と本「Androidアプリ開発の教科書 Kotlin対応」を購入。