Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用FindOnTours的python inrange错误_Python_Cv2 - Fatal编程技术网

使用FindOnTours的python inrange错误

使用FindOnTours的python inrange错误,python,cv2,Python,Cv2,在这段代码中,我想用轨迹栏选择一种颜色的圆形对象,检测角点并在对象周围画一个圆` 在此代码中,它检测使用轨迹栏选择的任何颜色 import numpy as np import cv2 def nothing(x): pass #nparray=np.array((0,0), 0) cv2.namedWindow('image') B=0 G=0 R=0 b=0 g=0 r=0 # create trackbars for color change cv2.createTrackbar

在这段代码中,我想用轨迹栏选择一种颜色的圆形对象,检测角点并在对象周围画一个圆` 在此代码中,它检测使用轨迹栏选择的任何颜色

import numpy as np
import cv2

def nothing(x):
    pass
#nparray=np.array((0,0), 0)
cv2.namedWindow('image')
B=0
G=0
R=0
b=0
g=0
r=0
# create trackbars for color change
cv2.createTrackbar('r','image',0,255,nothing)
cv2.createTrackbar('g','image',0,255,nothing)
cv2.createTrackbar('b','image',0,255,nothing)
cv2.createTrackbar('R','image',0,255,nothing)
cv2.createTrackbar('G','image',0,255,nothing)
cv2.createTrackbar('B','image',0,255,nothing)
web = cv2.VideoCapture(0)
while(1):
    base_high = np.array([B, G, R])
    base_low = np.array([b, g, r])
    k = cv2.waitKey(1) & 0xFF
    if k == 27:
        break
    r = cv2.getTrackbarPos('r', 'image')
    g = cv2.getTrackbarPos('g', 'image')
    b = cv2.getTrackbarPos('b', 'image')
    R = cv2.getTrackbarPos('R', 'image')
    G = cv2.getTrackbarPos('G', 'image')
    B = cv2.getTrackbarPos('B', 'image')
    ret, frame = web.read()
    cv2.flip(frame, 3, frame)
    hrv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    mask = cv2.inRange(hrv, base_low, base_high)    
    mask=cv2.erode(mask,None,iterations=2)
    mask=cv2.dilate(mask,None,iterations=2)
    res = cv2.bitwise_and(frame, frame, mask=mask)
    #add next code
    frame=cv2.resize(frame,(400,300))
    mask=cv2.resize(mask,(400,300))
    res=cv2.resize(res,(400,300))
    cv2.imshow("original",frame)
    cv2.imshow("masked", mask)
    cv2.imshow("res", res)
cv2.destroyAllWindows()
之后,当我添加此代码时

cnt = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2]
    centro = None
    if len(cnt) > 0:
        m = max(cnt, key=cv2.contourArea)
        ((x, y), r) = cv2.minEnclosingCircle(m)
        M = cv2.moments(m)
        centro = (int(M["m10"] / M["m00"]), int(M["m01"] / M["m00"]))
        if r > 10:
            cv2.circle(res.copy(), (int(x), int(y)), int(r), (0, 255, 255), 2)
它给了我那个错误

C:\Python27\python.exe C:/Users/MY/OneDrive/trackbar-colorselection/demo.py
OpenCV Error: Assertion failed (lb.type() == ub.type()) in cv::inRange, file C:\build\master_winpack-bindings-win64-vc14-static\opencv\modules\core\src\arithm.cpp, line 1984
Traceback (most recent call last):
  File "C:/Users/MY/OneDrive/trackbar-colorselection/demo.py", line 41, in <module>
    mask = cv2.inRange(hrv, base_low, base_high)
cv2.error: C:\build\master_winpack-bindings-win64-vc14-static\opencv\modules\core\src\arithm.cpp:1984: error: (-215) lb.type() == ub.type() in function cv::inRange
C:\Python27\python.exe C:/Users/MY/OneDrive/trackbar colorselection/demo.py
OpenCV错误:cv::inRange文件C:\build\master\u winpack-bindings-win64-vc14-static\OpenCV\modules\core\src\arithm.cpp第1984行中的断言失败(lb.type()==ub.type())
回溯(最近一次呼叫最后一次):
文件“C:/Users/MY/OneDrive/trackbar colorselection/demo.py”,第41行,在
遮罩=cv2.inRange(hrv、基值低、基值高)
cv2.error:C:\build\master\u winpack-bindings-win64-vc14-static\opencv\modules\core\src\arithm.cpp:1984:error:(-215)lb.type()=函数cv::inRange中的ub.type()
我的错误
我重新编写了r,在((x,y),r)=cv2中。我的循环(m)

base\u high是0,0,0,base\u low=0,0,0。您必须更改值这只是初始化,rgb和rgb使用轨迹栏更改,以实时查看高低的结果问题是,当我将代码与圆检测一起放入时,它会给我错误