Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/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
获取图像中红色的坐标(0.01*dst.max())-python_Python_Image Processing - Fatal编程技术网

获取图像中红色的坐标(0.01*dst.max())-python

获取图像中红色的坐标(0.01*dst.max())-python,python,image-processing,Python,Image Processing,我正在解决一个问题,只获取图像中特定颜色的坐标。所以我遇到了下面的代码,我不知道第四行和第五行。有人能解释一下为什么要使用0.01*dst.max()以及所有这些吗。提前谢谢 b, g, r = cv2.split(img) gray = np.float32(cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)) dst = cv2.cornerHarris(gray, 2, 3, 0.04) dst = np.where((dst > 0.01 * dst.max

我正在解决一个问题,只获取图像中特定颜色的坐标。所以我遇到了下面的代码,我不知道第四行和第五行。有人能解释一下为什么要使用0.01*dst.max()以及所有这些吗。提前谢谢

b, g, r = cv2.split(img)
gray = np.float32(cv2.cvtColor(img, cv2.COLOR_BGR2GRAY))
dst = cv2.cornerHarris(gray, 2, 3, 0.04)
dst = np.where((dst > 0.01 * dst.max()) & (r > 130) & (g < 100) & (b < 100), dst, 0)
img[dst > 0.01 * dst.max()] = [0, 255, 0]
coord = np.where(np.all(img == (0, 255, 0), axis=-1))
coorarray = zip(coord[0], coord[1])
b,g,r=cv2.分割(img)
灰色=np.float32(cv2.CVT颜色(img,cv2.COLOR_BGR2GRAY))
dst=cv2.0(灰色,2,3,0.04)
dst=np.其中((dst>0.01*dst.max())和(r>130)和(g<100)和(b<100),dst,0)
img[dst>0.01*dst.max()]=[0,255,0]
坐标=np.where(np.all(img==(0,255,0),axis=-1))
coorarray=zip(坐标[0],坐标[1])
  • 代码给出了图像中“角”的坐标

    dst > 0.01 * dst.max() 
    
是由“cornerHarris”进行的“拐角”检测的阈值。 如果“拐角”信号是有意义的(dst>0.01*dst.max()),则创建一个新的空白图像,并仅将感兴趣的像素变黑:

    img[dst > 0.01 * dst.max()] = [0, 255, 0]. 
然后确定这些黑色像素的坐标:

     coord = np.where(np.all(img == (0, 255, 0), axis=-1))
  • 在您的情况下,如果要进行特定的颜色检测,您不需要“dst”行,您必须对颜色进行选择:

    colorSelection = (r == 130) & (g == 100) & (b == 100) ### select your color rgb
    img[colorSelection] = [0, 255, 0] ### create a black/white image
    coord = np.where(np.all(img == (0, 255, 0), axis=-1)) ### find the coordinate of your interesting pixels 
    

通常,图像处理中使用的阈值不是通用的,它们不应适用于所有可能的图像。在您的情况下,如果图像来自同一“系列”,则应使用相同的选择。但您必须尝试/测试/播放选择才能看到。您也可以认为是动态选择,选择可以根据“某些参数”(平均值、最小值、最大值、对比度…)的功能自动适应输入图像。很抱歉,我不理解您的问题:什么是“特定距离坐标”?这是另一个问题,如果您想要清楚的答案,您必须更清楚。我还发现这个问题非常接近你的问题。。。。