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

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

新規登録して質問してみよう
ただいま回答率
85.39%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1141閲覧

python USEカメラ エラー cv2.error: OpenCV(4.0.1)

ouchi

総合スコア0

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/12/24 02:20

前提・実現したいこと

logicool C500 USBカメラを使用し、QRの検知、OR情報を使用し、ラジコンを自動制御する

発生している問題・エラーメッセージ

エラーがでてしまい、動作しません。

Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.7/tkinter/init.py", line 1705, in call
return self.func(*args)
File "/home/pi/sample/ET/line trace2.py", line 142, in btn_click1
linetra()
File "/home/pi/sample/ET/line trace2.py", line 120, in linetra
x=kamera()
File "/home/pi/sample/ET/line trace2.py", line 39, in kamera
qrdata = detector.detectAndDecode(frame)
cv2.error: OpenCV(4.0.1) /home/pi/opencv-4.0.1/modules/objdetect/src/qrcode.cpp:1098:
error: (-215:Assertion failed) !inarr.empty() in function 'detectAndDecode'

該当のソースコード

pythonです。

import sys
import tkinter
import tkinter as tk
import tkinter.ttk as ttk
import time
import RPi.GPIO as GPIO # PythonのGPIO制御用のパッケージ
import cv2

GPIO.setmode(GPIO.BOARD) #ピン番号で指定する
GPIO.setup(31, GPIO.OUT) #TRF CW
GPIO.setup(33, GPIO.OUT) #TRF CCW
GPIO.setup(35, GPIO.OUT) #TLF CW
GPIO.setup(37, GPIO.OUT) #TLF CCW
GPIO.setup(32, GPIO.OUT) #TRB CW
GPIO.setup(36, GPIO.OUT) #TRB CCW
GPIO.setup(38, GPIO.OUT) #TLB CW
GPIO.setup(40, GPIO.OUT) #TLB CCW
GPIO.setup(12, GPIO.IN,pull_up_down=GPIO.PUD_DOWN) #ライントレースR
GPIO.setup(16, GPIO.IN,pull_up_down=GPIO.PUD_DOWN) #ライントレースM
GPIO.setup(18, GPIO.IN,pull_up_down=GPIO.PUD_DOWN) #ライントレースL
cap = cv2.VideoCapture(0)

QRCodeDetectorを生成

detector = cv2.QRCodeDetector()

root = tkinter.Tk()
root.title("ラジコン")
root.geometry("300x300")
root.configure(bg='sky blue')

def kamera():

#カメラから1フレーム読み取り
ret, frame = cap.read()
time.sleep(0.1)
# QRコードを認識

qrdata = detector.detectAndDecode(frame) #if qrdata[0] != "": # print(qrdata[0]) time.sleep(0.1) # ウィンドウ表示 cv2.imshow('frame', frame) return qrdata[0]

def zenshin():
GPIO.output(31, 1)
GPIO.output(33, 0)
GPIO.output(35, 1)
GPIO.output(37, 0)
GPIO.output(32, 1)
GPIO.output(36, 0)
GPIO.output(38, 1)
GPIO.output(40, 0)
time.sleep(0.1)

GPIO.output(31, 1) GPIO.output(33, 1) GPIO.output(35, 1) GPIO.output(37, 1) GPIO.output(32, 1) GPIO.output(36, 1) GPIO.output(38, 1) GPIO.output(40, 1) time.sleep(0.3)

def migi():
GPIO.output(31, 0)
GPIO.output(33, 1)
GPIO.output(35, 1)
GPIO.output(37, 0)
GPIO.output(32, 0)
GPIO.output(36, 1)
GPIO.output(38, 1)
GPIO.output(40, 0)
time.sleep(0.1)

GPIO.output(31, 1) GPIO.output(33, 1) GPIO.output(35, 1) GPIO.output(37, 1) GPIO.output(32, 1) GPIO.output(36, 1) GPIO.output(38, 1) GPIO.output(40, 1) time.sleep(0.3)

def hidari():
GPIO.output(31, 1)
GPIO.output(33, 0)
GPIO.output(35, 0)
GPIO.output(37, 1)
GPIO.output(32, 1)
GPIO.output(36, 0)
GPIO.output(38, 0)
GPIO.output(40, 1)
time.sleep(0.1)

GPIO.output(31, 1) GPIO.output(33, 1) GPIO.output(35, 1) GPIO.output(37, 1) GPIO.output(32, 1) GPIO.output(36, 1) GPIO.output(38, 1) GPIO.output(40, 1) time.sleep(0.3)

def linetra():
while True:
if GPIO.input(12)==1 and GPIO.input(18)==1:
zenshin()
elif GPIO.input(12)==0:
hidari()
elif GPIO.input(18)==0:
migi()
x=kamera()
print(x)
if(x=='1'):
break

def turnL():
while True:
if GPIO.input(12)==1 and GPIO.input(18)==1:
zenshin()
elif GPIO.input(12)==0:
hidari()
elif GPIO.input(18)==0:
migi()
if GPIO.input(12)==0 and GPIO.input(18)==0:
break
while GPIO.input(12)==1 and GPIO.input(18)==1:
hidari()

def btn_click1(): #動作スタートボタン
#qrm='1'
linetra()
turnL()
#qrm='1'
linetra()

btn1 = tkinter.Button(root,text='start',command=btn_click1,bg='snow')
btn1.place(x=130, y=1)

root.mainloop()

試したこと

カメラの関数を単体で動かした場合、動くことは確認しております。

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

jbpb0

2021/12/24 10:12

pythonのコードの一番最初の行のすぐ上に ```python だけの行を追加してください また、pythonのコードの一番最後の行のすぐ下に ``` だけの行を追加してください または、 https://teratail.storage.googleapis.com/uploads/contributed_images/56957fe805d9d7befa7dba6a98676d2b.gif を見て、そのようにしてみてください 現状、コードがとても読み辛いです 質問にコードを載せる際に上記をやってくれたら、他人がコードを読みやすくなり、コードの実行による現象確認もやりやすくなるので、回答されやすくなります
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.39%

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

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

質問する

関連した質問