#python #opencv
Есть такой код: import cv2 import numpy as np from PIL import ImageGrab kernelOpen=np.ones((5,5)) kernelClose=np.ones((20,20)) while(1): frames = np.array(ImageGrab.grab(bbox =(0,40,1280,720))) frame = cv2.cvtColor(frames, cv2.COLOR_BGR2RGB) hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) lower_red = np.array([18, 210, 20]) upper_red = np.array([35, 255, 255]) mask = cv2.inRange(hsv, lower_red, upper_red) canny = cv2.Canny(frame, 50, 150) maskOpen=cv2.morphologyEx(mask,cv2.MORPH_OPEN,kernelOpen) maskClose=cv2.morphologyEx(maskOpen,cv2.MORPH_CLOSE,kernelClose) maskFinal=maskClose conts,h=cv2.findContours(maskFinal.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE) cv2.drawContours(frames,conts,-1,(255,0,0),3) res = cv2.bitwise_and(frame,frame, mask= mask) cv2.imshow('mask',mask) if cv2.waitKey(1) & 0xFF == ord('q'): break cv2.destroyAllWindows() cap.release() при запуске получаю: Traceback (most recent call last): File "C:/Users/Andrey/Desktop/test123.py", line 22, inconts,h=cv2.findContours(maskFinal.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE) ValueError: too many values to unpack (expected 2) В чём проблема?
Ответы
Ответ 1
im, conts, h = cv2.findContours(maskFinal.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)Ответ 2
Дело в том, что функция cv2.findContours возвращает кортеж из 3-х элементов, а вы распаковываете кортеж в две переменные. Нужно заменить на: conts, h, _ = cv2.findContours(maskFinal.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
Комментариев нет:
Отправить комментарий