Python脚本,用于检查图像中是否存在红色,并调用其他函数

Python脚本,用于检查图像中是否存在红色,并调用其他函数,python,opencv,image-processing,colors,Python,Opencv,Image Processing,Colors,我现在正在学习Python并打开CV。我的问题是我需要找出我的图像是否为红色,如果它有红色调用一个函数,如果它没有红色调用另一个函数。 我有代码来找到我的图像中的红色,问题是我不能写,如果条件喜欢 如果图像为红色,请执行此操作 否则就这样做 有人能帮我吗? 下面是我尝试的代码,我可以检测红色并打印图像,但无法在我的脚本中添加条件。请帮我解决这个问题 import cv2 import numpy as np img = cv2.imread("Myimage.png") img_hsv = cv

我现在正在学习Python并打开CV。我的问题是我需要找出我的图像是否为红色,如果它有红色调用一个函数,如果它没有红色调用另一个函数。 我有代码来找到我的图像中的红色,问题是我不能写,如果条件喜欢 如果图像为红色,请执行此操作 否则就这样做

有人能帮我吗? 下面是我尝试的代码,我可以检测红色并打印图像,但无法在我的脚本中添加条件。请帮我解决这个问题

import cv2
import numpy as np
img = cv2.imread("Myimage.png")
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
mask1 = cv2.inRange(img_hsv, (0,50,20), (5,255,255))
mask2 = cv2.inRange(img_hsv, (175,50,20), (180,255,255))
mask = cv2.bitwise_or(mask1, mask2 )
croped = cv2.bitwise_and(img, img, mask=mask)
cv2.imshow("mask", mask)
cv2.imshow("croped", croped)
cv2.waitKey()

假设变量
mask
包含红色区域,并且是一个二进制数组,那么您只需对1的元素求和,然后将和与零进行比较。如果没有元素为1,则图像不包含红色

if (mask == 1).sum() > 1:
    # do your stuff

其思想是使用
cv2.countNonZero()
检查遮罩图像中的白色像素。使用
cv2.inRange()
进行颜色阈值化后,您将获得一个二进制掩码,其上下HSV阈值内的任何像素均为白色。因此,您可以简单地检查遮罩上是否存在白色像素,以确定图像中是否存在红色

# Binary mask with pixels matching the color threshold in white
mask = cv2.bitwise_or(mask1, mask2)

# Determine if the color exists on the image
if cv2.countNonZero(mask) > 0:
    print('Red is present!')
else:
    print('Red is not present!')

可能重复感谢您的回复。我能够用此解决方案解决我的问题