Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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
我的Python脚本读取错误的RGB值-OpenCV_Python_Python 3.x_Opencv_Image Processing_Computer Vision - Fatal编程技术网

我的Python脚本读取错误的RGB值-OpenCV

我的Python脚本读取错误的RGB值-OpenCV,python,python-3.x,opencv,image-processing,computer-vision,Python,Python 3.x,Opencv,Image Processing,Computer Vision,我正在尝试编写代码,从像素的HSV值识别颜色。颜色识别效果很好,但有时它会得到错误的值,我在绘图中检查了它们 我正在处理的图像: 这是我的词典,其中包含HSV颜色空间中的颜色值: 色调饱和度值颜色空间中的颜色 颜色={ “红色”:np.数组[0,100,100], “orange”:np.数组[30100100], “黄色”:np.数组[60100100], “绿色”:np.数组[120100100], 'blue':np.数组[240100100], 'violet':np.数组[27010

我正在尝试编写代码,从像素的HSV值识别颜色。颜色识别效果很好,但有时它会得到错误的值,我在绘图中检查了它们

我正在处理的图像:

这是我的词典,其中包含HSV颜色空间中的颜色值:

色调饱和度值颜色空间中的颜色 颜色={ “红色”:np.数组[0,100,100], “orange”:np.数组[30100100], “黄色”:np.数组[60100100], “绿色”:np.数组[120100100], 'blue':np.数组[240100100], 'violet':np.数组[270100100], “粉红”:np.数组[330100100], } 颜色识别功能,返回字符串颜色名称rgb_到_hsv工作良好的值是正确的-我已经检查过了

def颜色识别像素RGB: 像素hsv=rgb_至hsvpixelRGB 如果像素HSV[1]<10: 如果像素HSV[2]<12: 返回“黑色” elif pixelHSV[2]>80: 返回“白色” 其他: 返回“灰色” 其他: diff=np.emptyshape=0,2,dtype=['values',np.dtypeint',names',typecolors.keys] 对于名称,以颜色表示的值。项: abs_diff=absintpixelHSV[0]-intvalue[0] diff=np.appenddiff,np.array[abs_diff,name],dtype=diff.dtype color=np.sortdiff[0][1] 如果像素HSV[2]<10: 返回“黑色” 其他: 返回颜色 脚本的核心:

img=cv.imread'img/shapes_和_colors.jpg' rgb=cv.CVT颜色,cv.COLOR\U BGR2RGB 灰色=cv.CVT颜色,cv.COLOR\U RGB2灰色 模糊=cv.GaussianBlurgray,5,5,0 thresh=cv.ThresholdFuzzy,70255,cv.thresh_二进制[1] cnts=cv.findcontoursrthresh.copy、cv.RETR\u EXTERNAL、cv.CHAIN\u APPROX\u SIMPLE cnts=imutils.grab\u contourscnts 点=np。空形状=0,4 对于碳纳米管中的碳: M=cv.momentsc cX=intM[m10]/M[m00] cY=intM[m01]/M[m00] 点=np.appendpoints,[[cX,cY,rgb[cX,cY],颜色识别rgb[cX,cY]],轴=0 脚本的输出:

数组可以使用坐标Y、X行、列而不是X、Y–furas


检查你如何选择你抓住颜色的点。问题不在于颜色识别或OpenCV给出错误的RGB,而在于你选择了错误的点。在图像上绘制点,查看它们显示的位置,进行数学运算以使其正确。数组可能使用坐标Y、X行、列而不是X,Y@furas非常感谢我没有看到这个错误