質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

3313閲覧

Pythonでのカメラ制御方法

Opt

総合スコア7

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1グッド

1クリップ

投稿2019/03/26 13:53

前提・実現したいこと

カメラをキャプチャしながら、カメラの制御コマンドをGUI上に入力し、
送受信するソフトを作成しようと考えております。

プログラム初心者が見よう見まねで作成してみましたが、
案の定上手くいきませんでした。

GUIの表示とカメラ画像の同時表示及び制御はどのように行えば良いでしょうか。
参考になるか疑問ですが、ソースコードも記載しておきます。

該当のソースコード

python

1import cv2 2import serial 3import serial.tools.list_ports 4import tkinter 5 6class Serial_Control(tkinter.Frame): 7 def __init__(self, master=None): 8 super().__init__(master) 9 self.pack() 10 self.create_widgets() 11 12 def create_widgets(self): 13 self.static1 = tkinter.Label(text=u'送信コマンド') 14 self.static1.place(x=10, y=10) 15 self.EditBox1 = tkinter.Entry(width=50) 16 self.EditBox1.place(x=10, y=30) 17 self.static2 = tkinter.Label(text=u'受信コマンド') 18 self.static2.place(x=10, y=50) 19 self.EditBox2 = tkinter.Entry(width=50) 20 self.EditBox2.place(x=10, y=70) 21     #↓ここで受信コマンドを表示したい。 22 self.EditBox2.insert(tkinter.END, self.rcv_cmd) 23 self.button = tkinter.Button(text="送信",command=self.send) 24 self.button.place(x=10,y=100) 25 26 def send(self): 27 self.snd_cmd = self.EditBox1.get() 28     self.rcv_cmd =self.uart_write_read(self.snd_cmd, 20) 29 30 '''有効なCOMポートを自動的に探して返す''' 31 def search_com_port(self): 32 coms = serial.tools.list_ports.comports() 33 comlist = [] 34 for com in coms: 35 comlist.append(com.device) 36 self.use_port = comlist[0] 37 print('Use COM port: ' + self.use_port) 38 return self.use_port 39 40 '''シリアル通信でデータの送受信を行う''' 41 def uart_write_read(self,w_data, r_size): 42 # Write 43 ser.write(w_data) 44 # Read 45 self.r_data = ser.read_until(size=r_size) #size分Read 46 return self.r_data 47 48#GUI表示 49root = tkinter.Tk() 50root.title("Camera Control") 51root.geometry("400x200") 52app = Serial_Control(master=root) 53 54#接続 55use_port = app.search_com_port() 56ser = serial.Serial(use_port,9600,timeout=10) 57cap = cv2.VideoCapture(0) 58 59while True: 60 ret, frame = cap.read() 61 frame = cv2.resize(frame, (int(frame.shape[1] / 2), int(frame.shape[0] / 2))) 62 cv2.imshow('xxx', frame) 63 app.MainLoop() 64 print(str(frame.text)) 65 66 # キー入力を1ms待って、k が27(ESC)だったらBreakする 67 k = cv2.waitKey(1) 68 if k == 27: 69 break 70 71cap.release() 72cv2.destroyAllWindows() 73ser.close()
otaka👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t_obara

2019/03/27 01:48

貴殿が提示したコードが何かを参考にされたものであれば、参考とされたページもご提示されるとよろしいかと。 ちなみに、キー入力待ちとGUIは相性がよろしくないです。まずはカメラ制御を考えず、tkinterでOpenCVを利用したカメラ映像を表示することをお考えになるとよろしいかと。
Q71

2019/03/27 06:12

print(str(frame.text)) って、機能していますか?その前の行でブロックしていませんか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問