Python 如何消除OpenCV代码中的非类型错误
我正在尝试使用python中的OpenCV使用ArUco标记Python 如何消除OpenCV代码中的非类型错误,python,opencv,nonetype,aruco,Python,Opencv,Nonetype,Aruco,我正在尝试使用python中的OpenCV使用ArUco标记 vidcap = cv2.VideoCapture(0) vidcap.set(cv2.CAP_PROP_BUFFERSIZE, 1) c = np.array(np.zeros([9,4,2])) while vidcap.isOpened(): exists,image = vidcap.read() if exists: image = cv2.resize(image, (1200, 800)) arucodi
vidcap = cv2.VideoCapture(0)
vidcap.set(cv2.CAP_PROP_BUFFERSIZE, 1)
c = np.array(np.zeros([9,4,2]))
while vidcap.isOpened():
exists,image = vidcap.read()
if exists:
image = cv2.resize(image, (1200, 800))
arucodict = aruco.Dictionary_get(aruco.DICT_6X6_50)
arucoparams = aruco.DetectorParameters_create()
(corners, id, rejected) = aruco.detectMarkers(image, arucodict, parameters=arucoparams)
for (a,b) in zip(corners,id):
if b in range(0,10):
c[b-1]=a
for语句正在抛出错误
对于拉链式(a,b)(角落,id):
TypeError:“非类型”对象不可编辑
我做错了什么?如果vidcap向您提供与我相同的输入数据(因为我不知道您在图像中寻找的是什么),您很可能会尝试处理空列表;特别是拐角处。我添加了一个检查:
vidcap.set(cv2.CAP_PROP_BUFFERSIZE, 1)
c = np.array(np.zeros([9,4,2]))
while vidcap.isOpened():
exists,image = vidcap.read()
if exists:
image = cv2.resize(image, (1200, 800))
arucodict = aruco.Dictionary_get(aruco.DICT_6X6_50)
arucoparams = aruco.DetectorParameters_create()
(corners, id, rejected) = aruco.detectMarkers(image, arucodict, parameters=arucoparams)
if corners:
for (a,b) in zip(corners,id):
if b in range(0,10):
c[b-1]=a
始终将完整的错误消息(从单词“Traceback”开始)作为文本(不是屏幕截图,也不是指向外部门户的链接)进行讨论(不是评论)。还有其他有用的信息。如果错误显示哪一行出现问题,则首先可以使用
print()
,print(type())
检查变量中的内容。似乎您在角落中有None
或id
,只有您可以使用print()
检查它。当你知道哪个变量有None
时,你必须检查给出这个None
-detectMarkers
-的代码,你必须弄清楚为什么它给出None
。我们没有您的数据,我们无法运行您的代码,因此我们无法检查为什么它会给出无
。