Opencv TypeError:点不是 numpy 数组,也不是标量

2024-03-06

基本上,我有这段代码可以检测背景的变化并将其装箱。当我运行代码时,我收到此错误:

Traceback (most recent call last):
  File "cam2.py", line 28, in <module>
    vertices = cv2.boundingRect(list(contours))
TypeError: points is not a numpy array, neither a scalar

Code:

import cv2
import numpy as np

c = cv2.VideoCapture(0)
_,f = c.read()

avg1 = np.float32(f)

while(1):
    _,f = c.read()

    cv2.accumulateWeighted(f,avg1,0.1)

    res1 = cv2.convertScaleAbs(avg1)

    absdiff = cv2.absdiff(f,res1)

    graydiff = cv2.cvtColor(absdiff, cv2.COLOR_BGR2GRAY)

    retval, mask = cv2.threshold(graydiff, 50,255,cv2.THRESH_BINARY) 

    mask = cv2.dilate(mask, None, 18)
    mask = cv2.erode(mask, None, 10) 

    contours = cv2.findContours(mask, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE) #not right

    while contours:
        vertices = cv2.boundingRect(list(contours))
        interest = vertices

        point1 = (interest[0], interest[1])

        point2 = (interest[0] + interest[2], interest[1] + interest[3])
        cv2.rectangle(f, point1, point2, cv2.RGB(255,0,0), 1)
        cv2.rectangle(mask, point1, point2, cv2.RGB(255,255,255), 1)

        contours = contours.h_next()

    cv2.imshow('mask',mask)

    cv2.imshow('img',f)
    cv2.imshow('avg1',res1)

    k = cv2.waitKey(20)

    if k == 27:
        break

cv2.destroyAllWindows()
c.release()

我该如何解决这个问题?谢谢。


根据寻找轮廓 http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#findcontoursdoc 它返回两件事:

cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]]) → contours, hierarchy

将行更改为:

contours, hierarchy = cv2.findContours(mask, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE) 

这可能有效!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Opencv TypeError:点不是 numpy 数组,也不是标量 的相关文章

随机推荐