• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

python3+opencv 使用灰度直方图来判断图片的亮暗操作

python 搞代码 4年前 (2022-01-08) 11次浏览 已收录 0个评论

这篇文章主要介绍了python3+opencv 使用灰度直方图来判断图片的亮暗操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

1.如何让计算机自动判断一张图是否偏暗?或是判断一张图是否是处于夜晚?我们可以先把图片转换为灰度图,然后根据灰度值的分布来判断,如:

我们可以从上图看到,晚上的图片的灰度值是集中在前段的,如0~30多左右,我们再看一张比较明亮的图片:

明亮的图片的灰度直方图是比较靠后的.

因此要判断图片的亮暗

来源gaodai.ma#com搞##代!^码网

,只需要统计偏暗的像素个数,再除以图片像素的总个数,得到百分比p即可,至于p大于多少即判断为暗,则可以由你自己设置.下面给出代码,此代码可以在装满图片的目录里选出偏暗的图片,然后把这些图片保存下来.

2.代码:

 import cv2; import numpy as np; import matplotlib.pyplot as plt; import os; import sys; def func(img,pic_path,pic): #把图片转换为灰度图 gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY); #获取灰度图矩阵的行数和列数 r,c = gray_img.shape[:2]; dark_sum=0;	#偏暗的像素 初始化为0个 dark_prop=0;	#偏暗像素所占比例初始化为0 piexs_sum=r*c;	#整个弧度图的像素个数为r*c #遍历灰度图的所有像素 for row in gray_img: for colum in row: if colum=0.75:	#人为设置的超参数:表示若偏暗像素所占比例超过0.78,则这张图被认为整体环境黑暗的图片 print(pic_path+" is dark!"); cv2.imwrite("../DarkPicDir/"+pic,img);#把被认为黑暗的图片保存 else: print(pic_path+" is bright!") #hist(pic_path); #若要查看图片的灰度值分布情况,可以这个注释解除 #用于显示图片的灰度直方图 def hist(pic_path): img=cv2.imread(pic_path,0); hist = cv2.calcHist([img],[0],None,[256],[0,256]) plt.subplot(121) plt.imshow(img,'gray') plt.xticks([]) plt.yticks([]) plt.title("Original") plt.subplot(122) plt.hist(img.ravel(),256,[0,256]) plt.show() #读取给定目录的所有图片 def readAllPictures(pics_path): if not os.path.exists(pics_path): print("路径错误,路径不存在!") return; allPics = []; pics = os.listdir(pics_path); for pic in pics: pic_path = os.path.join(pics_path,pic); if os.path.isfile(pic_path): allPics.append(pic_path); img=cv2.imread(pic_path); func(img,pic_path,pic); return allPics; #创建用于存放黑暗图片的目录 def createDarkDir(): DarkDirPath = "../DarkPicDir"; isExists = os.path.exists(DarkDirPath); if not isExists: os.makedirs(DarkDirPath); print("dark pics dir is created successfully!"); return True; else: return False; if __name__ =='__main__': pics_path = sys.argv[1];#获取所给图片目录 createDarkDir(); allPics=readAllPictures(pics_path);

运行命令: python3 cal.py 图片集的路径名

(其中cal.py 是python代码的文件名)

运行结果:

然后进入装黑暗图片的目录里,就会看到从空目录变成装有黑暗图片:

以上就是python3+opencv 使用灰度直方图来判断图片的亮暗操作的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python3+opencv 使用灰度直方图来判断图片的亮暗操作

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址