如何判断一张图片的黑色区域是否大于 60%?

比如这种的图片,大面积是黑色的,但又不全是黑色的

但是这样图片,我希望他被判定为『无效画面』

有什么办法可以『判断一张图片的黑色区域是否大于 60%』

或者说『判断一张图片的纯色区域是否大于 60%』?

一开始想过一个办法:『压缩图片』后判断图片大小,但是觉得这样不可靠

还有就是这样的『高斯模糊』的图片也是垃圾图片,也应该去除

图片.png

图片.png

阅读 3.9k
3 个回答

应该是把每个点的色值存进一个二维码数组 然后判断黑色的百分比

纯色也同样判断,group by分组之后 再看下 最多数量的占比总共是多少 当然这个不是特别准

OpenCV 的话可以通过统计图像中黑色像素的数量来判定,这里是一段示例代码:

import cv2

# 读入图像
img = cv2.imread("image.jpg")

# 将图像转换为灰度图像,方便处理
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 计算图像中黑色像素数量
black_pixels = cv2.countNonZero(gray < 128)

# 计算图像总像素数量
total_pixels = img.shape[0] * img.shape[1]

# 计算黑色像素所占百分比
black_percent = black_pixels / total_pixels

# 判断黑色像素是否占图像 60% 以上
if black_percent > 0.6:
    print("黑色像素占图像 60% 以上")
else:
    print("黑色像素未占图像 60%")

需要注意的是,以上代码是基于灰度图像,其定义黑色为像素值小于 128 的灰度值。如果图像是彩色图像,可能需要使用不同的阈值来计算黑色像素。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题