gpt4 book ai didi

python - 使用 Opencv python 查找灰度或彩色图像

转载 作者:太空宇宙 更新时间:2023-11-03 21:26:39 25 4
gpt4 key购买 nike

我想在 openCV python 的帮助下自动化和过滤掉灰度和彩色图像。我尝试在彩色和灰度图像上运行直方图,在下面找到结果

GrayScale Vs Color Image

尝试过的代码:

import cv2
import numpy as np
import sys
img = cv2.imread(sys.argv[1])
h = np.zeros((300,256,3))

bins = np.arange(256).reshape(256,1)
color = [ (255,0,0),(0,255,0),(0,0,255) ]
for ch, col in enumerate(color):
hist_item = cv2.calcHist([img],[ch],None,[256],[0,256])
cv2.normalize(hist_item,hist_item,0,255,cv2.NORM_MINMAX)
hist=np.int32(np.around(hist_item))
pts = np.column_stack((bins,hist))
cv2.polylines(h,[pts],False,col)
h=np.flipud(h)
cv2.imshow('colorhist',h)
cv2.waitKey(0)

我可以在不为每个文件创建直方图的情况下自动执行相同的操作吗?

最佳答案

扩展上面的 channel 比较,使用 numpy 数组切片并假设图像是 RGB 或 HSV 之类的颜色空间:

def isbw(img):
#img is a numpy.ndarray, loaded using cv2.imread
if len(img.shape) > 2:
looks_like_rgbbw = not False in ((img[:,:,0:1] == img[:,:,1:2]) == (img[:,:,1:2] == img[:,:,2:3]))
looks_like_hsvbw = not (True in (img[:,:,0:1] > 0) or True in (img[:,:,1:2] > 0))
return looks_like_rgbbw or looks_like_hsvbw
else:
return True

易于扩展以检查其他色彩空间条件。

未针对“边缘/异常值”情况(例如其他可能的格式)进行广泛测试。对于仅红色 channel (BGR) 图像将失败,因为这看起来像黑白 HSV 图像,因此信任 cv2 cvtColor 转换为 BGR 格式可能更好,具体取决于图像主题。可能存在其他“边缘”情况。

关于python - 使用 Opencv python 查找灰度或彩色图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33516235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com