Python 检测像素是否为红色

Python 检测像素是否为红色,python,numpy,opencv,image-processing,hsv,Python,Numpy,Opencv,Image Processing,Hsv,我们可以如下定义HSV中红色的范围。我想检测某个像素是否为红色?在Python中如何实现这一点?我花了一整天的时间,但找不到解决办法。请解决我的问题。我对Python非常陌生。我使用的代码是: img=cv2.imread("img.png") img_hsv=cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # lower mask (0-10) lower_red = np.array([0,50,50]) upper_red = np.array([10,255,

我们可以如下定义HSV中红色的范围。我想检测某个像素是否为红色?在Python中如何实现这一点?我花了一整天的时间,但找不到解决办法。请解决我的问题。我对Python非常陌生。我使用的代码是:

img=cv2.imread("img.png")
img_hsv=cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# lower mask (0-10)
lower_red = np.array([0,50,50])
upper_red = np.array([10,255,255])
mask0 = cv2.inRange(img_hsv, lower_red, upper_red)

# upper mask (170-180)
lower_red = np.array([170,50,50])
upper_red = np.array([180,255,255])
mask1 = cv2.inRange(img_hsv, lower_red, upper_red)
image_height,image_width,_=img.shape    
for i in range(image_height):
   for j in range(image_width):
       if img_hsv[i][j][1]>=lower_red and img_hsv[i][j][1]<=upper_red:
          print("Found red")
img=cv2.imread(“img.png”)
img\u hsv=cv2.cvt颜色(img,cv2.COLOR\u BGR2HSV)
#下部遮罩(0-10)
下_red=np.数组([0,50,50])
上\u red=np.数组([10255255])
mask0=cv2.inRange(img\U hsv,下部红色,上部红色)
#上面罩(170-180)
下_red=np.数组([170,50,50])
上部红色=np.数组([180255255])
mask1=cv2.inRange(img\U hsv,下部红色,上部红色)
图像高度,图像宽度,图像形状
对于范围内的i(图像高度):
对于范围内的j(图像宽度):

如果img_hsv[i][j][1]>=lower_red和img_hsv[i][j][1]你几乎是对的。可以将低红色和高红色的遮罩合并为一个遮罩


对于此
ColorChecker.png

查找红色的步骤:

  • 读取图像并转换为
    hsv

  • 我使用此颜色映射选择红色范围(
    下限0~5,上限175~180
    ):

  • 然后合并遮罩,通过遮罩判断像素是否为红色。或“裁剪”用于可视化的区域:



  • 你几乎是对的。可以将低红色和高红色的遮罩合并为一个遮罩


    对于此
    ColorChecker.png

    查找红色的步骤:

  • 读取图像并转换为
    hsv

  • 我使用此颜色映射选择红色范围(
    下限0~5,上限175~180
    ):

  • 然后合并遮罩,通过遮罩判断像素是否为红色。或“裁剪”用于可视化的区域:



  • 你能发布你得到的错误吗?@JoseVasquez img_hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)cv2.error:OpenCV(3.4.1)C:\projects\OpenCV python\OpenCV\modules\imgproc\src\COLOR.cpp:11214:错误:(-215)(scn==3 | scn==4)和&(depth==0 | depth==5)在函数cv中:cvtColor@JoseVasquez这就是我得到的错误。@KnowledgeSeeker在第一行使用
    img=cv2.imread(“img.png”,1)在您修复错误后,这一行将是一个问题:如果img_hsv[I][j][1]>=lower_red和img_hsv[I][j][1],您能发布您得到的错误吗?@JoseVasquez img_hsv=cv2.cvt颜色(img,cv2.COLOR|u BGR2HSV)cv2.error:OpenCV(3.4.1)C:\projects\OpenCV python\OpenCV\modules\imgproc\src\COLOR.cpp:11214:error:(-215)(scn==3 | scn==4)和&(depth==0 | depth==5)在函数cv中:cvtColor@JoseVasquez这就是我得到的错误。@KnowledgeSeeker使用
    img=cv2.imread(“img.png”,1)在第一行
    修复错误后,这一行将出现问题:如果img_hsv[i][j][1]>=下_red和img_hsv[i][j][1]
    #!/usr/bin/python3
    # 2018.07.08 10:39:15 CST
    # 2018.07.08 11:09:44 CST
    import cv2
    import numpy as np
    ## Read and merge
    img = cv2.imread("ColorChecker.png")
    img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    
    ## Gen lower mask (0-5) and upper mask (175-180) of RED
    mask1 = cv2.inRange(img_hsv, (0,50,20), (5,255,255))
    mask2 = cv2.inRange(img_hsv, (175,50,20), (180,255,255))
    
    ## Merge the mask and crop the red regions
    mask = cv2.bitwise_or(mask1, mask2 )
    croped = cv2.bitwise_and(img, img, mask=mask)
    
    ## Display
    cv2.imshow("mask", mask)
    cv2.imshow("croped", croped)
    cv2.waitKey()