Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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/2/jsf-2/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
Python OpenCV获取正确的HSV值_Python_Opencv_Hsv - Fatal编程技术网

Python OpenCV获取正确的HSV值

Python OpenCV获取正确的HSV值,python,opencv,hsv,Python,Opencv,Hsv,我试图在范围内应用,以便在柠檬上找到黑色污渍。 由于某些原因,我无法找到正确的HSV值(我曾尝试使用GIMP和photoshop,但没有成功) 我在C++中找到了类似的参考文章: 到目前为止,我的代码非常简短: image = cv2.imread("./data/lemon1big.jpg") # parse BGR to RGB image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) lower = np.array([20,5,5],np.uint

我试图在范围内应用,以便在柠檬上找到黑色污渍。 由于某些原因,我无法找到正确的HSV值(我曾尝试使用GIMP和photoshop,但没有成功)

我在C++中找到了类似的参考文章:

到目前为止,我的代码非常简短:

image = cv2.imread("./data/lemon1big.jpg")

# parse BGR to RGB
image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

lower = np.array([20,5,5],np.uint8)
upper = np.array([68,70,68],np.uint8)
imageHsv = cv2.inRange(imageHsv, lower, upper)

imageAdaptive = cv2.adaptiveThreshold(imageHsv,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,15,2)
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(1,1))
imageDilate = cv2.dilate(imageAdaptive,kernel)

result, contours, hierarchy = cv2.findContours(imageDilate.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

if len(contours) != 0:    
    for (i, c) in enumerate(contours):
        area = cv2.contourArea(c)
        if (area > 700 and area < 1000):
            x,y,w,h = cv2.boundingRect(c)            
            cv2.rectangle(result,(x,y),(x+w,y+h),(0,255,0),12)
image=cv2.imread(“./data/lemon1big.jpg”)
#将BGR解析为RGB
图像=cv2.CVT颜色(图像,cv2.COLOR\u BGR2HSV)
下限=np.数组([20,5,5],np.uint8)
上限=np.数组([68,70,68],np.uint8)
imageHsv=cv2.inRange(imageHsv,下部,上部)
imageAdaptive=cv2.adaptiveThreshold(imageHsv,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,15,2)
kernel=cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(1,1))
ImageDisplate=cv2.Displate(imageAdaptive,内核)
结果,等高线,层次=cv2.findContours(ImageDisplate.copy(),cv2.RETR\u列表,cv2.CHAIN\u近似值\u简单)
如果len(等高线)!=0:    
对于枚举(等高线)中的(i,c):
面积=cv2。轮廓面积(c)
如果(面积大于700且面积小于1000):
x、 y,w,h=cv2.boundingRect(c)
cv2.矩形(结果,(x,y),(x+w,y+h),(0255,0),12)
这是原始的蒙面照片:

我查找的结果如下(大约12个黑色污点):

我的结果是这样的:

你的结果如何?@MarkSetchell我用一个结果编辑了我的文章(你可以忽略我在原始图像上使用圆圈的事实)你没有将图像转换为hsv颜色空间,是吗?@mika文章中的代码没有包含它。对不起,我的错。我将图像从BGR转换为HSV。HSV是强制性的吗?您可以尝试的一件事是处理实验室图像,并将灰度图像设置为Ig=(a*+b*)/2。如果光度出现问题,可以通过光度Ig=(a*+b*)/(2 x L)进行规格化。