Страницы

Поиск по вопросам

среда, 4 марта 2020 г.

ошибка при запуске

#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, in 
    conts,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)

Комментариев нет:

Отправить комментарий