前提・実現したいこと
ラズパイにopencvとPiCameraを乗せて赤色の物体の認識をしようとしているのですが下記のエラーが出て実行できません
発生している問題・エラーメッセージ
[ INFO:0] VIDEOIO: Enabled backends(4, sorted by priority): FFMPEG(1000); V4L2(990); CV_IMAGES(980); CV_MJPEG(970) (DEBUG) V4L: opening /dev/video0 Traceback (most recent call last): File "cameratest.py", line 23, in <module> rects = find_rect_of_target_color(frame) File "cameratest.py", line 11, in find_rect_of_target_color contours, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) ValueError: too many values to unpack
該当のソースコード
Python
1# coding:utf-8 2import cv2 3import numpy as np 4 5def find_rect_of_target_color(image): 6 hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV_FULL) 7 h = hsv[:,:,0] 8 s = hsv[:,:,1] 9 mask = np.zeros(h.shape, dtype=np.uint8) 10 mask[((h < 20) | (h > 200)) & (s > 128)] = 255 11 contours, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 12 rects = [] 13 for contour in contours: 14 approx = cv2.convexHull(contour) 15 rect = cv2.boundingRect(approx) 16 rects.append(np.array(rect)) 17 return rects 18 19if __name__ == "__main__": 20 capture = cv2.VideoCapture(0) 21 while cv2.waitKey(30) < 0: 22 _, frame = capture.read() 23 rects = find_rect_of_target_color(frame) 24 if len(rects) > 0: 25 rect = max(rects, key=(lambda x: x[2] * x[3])) 26 cv2.rectangle(frame, tuple(rect[0:2]), tuple(rect[0:2] + rect[2:4]), (0, 0, 255), thickness=2) 27 cv2.imshow('red', frame) 28 capture.release() 29 cv2.destroyAllWindows()
回答2件
あなたの回答
tips
プレビュー