Python过滤纯色图片,挑选视频封面

分类: python

2019-12-10

|

1889

|

评论:0

分享:

截取视频封面后,经常出现全黑、全白等不可用的封面图片。于是就有了用程序选择视频封面的需求。
经过不断试验,效果最好的方法是根据图片内物品的数量来选图。

废话不多说,直接上代码:

1. 把图片处理为灰度图

import cv2

# pip install opencv-python

img=cv2.imread('pic-1.jpg')
grayImg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# cv2.imshow('src', grayImg)
# cv2.imshow('src', grayImg)


处理完后  ====>     



2. 图片二值化

scalar = cv2.mean(grayImg)
thresh = scalar[0]
_, binImg = cv2.threshold(grayImg, thresh, 255, cv2.THRESH_BINARY)

这里需要说下thresh值的选择,它决定了颜色最终转为黑色还是白色(大于thresh为白色)。


大多数教程中,这个值都是一个固定的数,但这是不准确的。对于较暗或是较亮的图片,会造成图片全黑或全白。因此这里使用了mean动态确定thresh。

如例图是一张较暗的图片,thresh经过动态调整后,效果比固定一个值要好。



3. 画出轮廓

contours, hierarchy = cv2.findContours(binImg, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)

print(len(contours))

由于我们不需要那么精确的找到图片中的物品,可以认为contours的数量就是物品的数量。最后对比多张图片选取contours最多的一张就行。


如果你想验证求得轮廓的效果,可以使用drawContours画出轮廓。

cv2.drawContours(img, contours, -1, (0, 200, 255), 2)

cv2.imshow('src',img)
# or
# cv2.imwrite('pic-1-contors.jpg',img)

结果如图:




转载请注明来源

文章:Python过滤纯色图片,挑选视频封面

链接:/article/46

作者:gojuukaze

本文共 0 个回复

发表评论 (对文章评论)

captcha