Привет, я новичок в компьютерном зрении и переполнении стека, и у меня проблема с моей программой python 3 на Windows, так как функция cv2.findContours () возвращает 2 вместо трех значений, как в документации. Я передал 2 значения для возврата, чтобы решить ошибку, тип первого (изображение) является списком, а тип второго (cnts) - int32, но ни одно из них не может быть использовано в cv2.drawContours () без ошибок здесь я использую изображение в качестве параметра, потому что это единственный возвращаемый список, поэтому я предполагаю, что это список контуров cv2.drawContours (). Так вот код:
#This is the program for a document scanner so as to extract a document
#from any image and apply perspective transform to show it as final result
import numpy as np
import cv2
import imutils
from matplotlib import pyplot as plt
cap=cv2.VideoCapture(0)
ret,img=cap.read()
img1=img.copy()
cv2.imshow('Image',img1)
img1=cv2.cvtColor(img1,cv2.COLOR_BGR2GRAY)
img1=cv2.bilateralFilter(img1,7,17,17)
img1=cv2.Canny(img1,30,200)
image,cnts=cv2.findContours(img1,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
#cnts=np.asarray(cnts,dtype='uint8')
cnts=np.array(cnts)
cv2.imshow('Edge',img1)
print('cnts var data type',cnts.dtype)
#print("Hi")
img=cv2.drawContours(img,[image],-1,(255,255,0),3)
Здесь python простоя результат оболочки появляется сейчас:
cnts var data type is int32
Traceback (most recent call last):
File "D:\PyCharm Projects\Test_1_docscanner.py", line 20, in <module>
img=cv2.drawContours(img,[image],-1,(255,255,0),3)
TypeError: contours is not a numpy array, neither a scalar