如何消除OpenCV代码中的非类型错误

2024-06-16 13:12:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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))
    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:“非类型”对象不可编辑

我做错了什么


Tags: inimageidforifexistsnpcv2
1条回答
网友
1楼 · 发布于 2024-06-16 13:12:34

如果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

相关问题 更多 >