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

标签 python opencv image-processing colors

我现在正在学习 Python 和 Open 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()

最佳答案

想法是使用 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!')

关于用于检查图像中是否存在红色并调用其他函数的 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58340960/

相关文章:

python - OpenCV 3.0.0 测试版 Python : Load error: 'module' object has no attribute 'Load'

matlab - 使用 Matlab 在二值图中查找凹度像素/点

c++ - 在 DCMTK 中将 OFString 转换为字符串或字符

python - 傅立叶空间中的滤波器表现不佳

python - 模拟 urllib.request.urlopen 的 read 函数返回 MagicMock 签名

python - 找到具有 O(1) 空间和 O(n) 时间的重复数字

python - AWS Lambda 使用 Python 启动异步进程(无需等待即可返回)

python - OpenCV 最近邻插值创建原始图像中不存在的像素

opencv - 打印关键点描述符

java - 是否有任何 java 库可以从图像中读取 vin 号码条形码?