前提・実現したいこと
pythonを独学で勉強しています。
その他言語についてもほぼ無知でプログラミングに関して完全なド素人です。
現状やりたいこととしては、
・「main.py」「sub.py」の2つのファイルを作成
・「sub」は「main」のモジュールとしてインポートする
(バックグラウンドで「sub」を待機させておくイメージです)
・「main」で特定の操作をすると、「sub」が走り出す
・「sub」の動作が完了すると、またバックグラウンドで待機
このような感じです。
まず、このようなことができるのでしょうか。
可能な場合「main」から「sub」へはどのように指示を出せば良いでしょうか。
また、「main」から「sub」へデータ(値)を受け渡したりすることは可能でしょうか。
このあたりの方法が全くわからず、調べても理解ができません。
方法とどのようなコードを書けばを知りたく、質問いたしました。
具体的には、
1.「main.py」にてウェブカメラを起動し、表示
同時に「sub.py」を起動し、バックグラウンドで待機させる
2.特定のコマにてボタンを押すとキャプチャをjpgで特定のフォルダに保存
その際、ファイル名に日付・時刻などをつける
3.項2を実行したと同時に、「sub.py」を実行(このトリガーの与え方がわかりません)
4.「sub.py」では項2で保存されたjpgファイルを開き、加工して保存したい
この際にjpgファイルを開くため、項2で指定したファイル名を取得する必要がある
(このファイル名の取得方法がわかりません)
5.「sub.py」での加工が終えたら再びバックグラウンドで待機
発生している問題・エラーメッセージ
該当のソースコード
Python
1「main.py」 2 3import cv2, sub, datetime 4 5cam_win = "capture" 6date_name = "" 7 8capture = cv2.VideoCapture(0) 9while(True): 10 date = datetime.datetime.now() 11 global date_name 12 date_name = "{0:%Y%m%d%H%M%S}_".format(date) 13 14 ret, img = capture.read() 15 16 if(ret == False): 17 print("capture failed.") 18 break 19 20 cv2.imshow(cam_win, img) 21 22 save_key = cv2.waitKey(1) 23 if save_key == ord("s"): 24 cv2.imwrite(date_name + "img.jpg", img) 25 print("save complete.") 26 continue 27 #ここで「sub.py」を走らせるシグナルを送りたい 28 #また、ファイル名を一緒に転送したい 29 30 key = cv2.waitKey(1) 31 if(key == 27): 32 print("close.") 33 break 34 35capture.release() 36cv2.destroyAllWindows() 37 38~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 39 40「sub.py」 41 42from threading import (Event, Thread) 43import cv2, datetime 44 45event = Event() 46 47def img_edit(): 48 49 while(True): 50 event.wait() 51 edit_img = cv2.imread("~.jpg", 1) #ここで「main.py」から転送されたファイル名を指定したい 52 cv2.imwrite("edit_img.jpg", edit_img) 53 #本来は画像加工をしたいのですが、説明を簡略化するためリネームのみとしています 54 55th = Thread(target=img_edit) 56th.start() 57#ここで「main.py」からのシグナルを受けてimg_edit関数を走らせるトリガーを入れる? 58event.set() 59 60自分で調べて考えたところ、上記のような内容となります。 61threadingやevent部分は理解が進まず、ネットで知った情報をコピペしている状態です。 62お手数をおかけしますがご教示のほどよろしくお願いいたします。 63
試したこと
補足情報(FW/ツールのバージョンなど)
利用環境は
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/14 06:14