【发布时间】:2018-07-07 17:52:41
【问题描述】:
我们可以如下定义 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")
【问题讨论】:
-
你能发布你得到的错误吗?
-
@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) in function cv::cvtColor
-
@JoseVasquez 这是我遇到的错误。
-
@KnowledgeSeeker 使用
img=cv2.imread("img.png", 1) in the first line -
修复错误后,这行会出现问题:如果 img_hsv[i][j][1]>=lower_red 和 img_hsv[i][j][1]
标签: python numpy opencv image-processing hsv