最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python3+opencv 使用灰度直方圖來(lái)判斷圖片的亮暗操作

 更新時(shí)間:2020年06月02日 11:31:12   作者:ZJE_ANDY  
這篇文章主要介紹了python3+opencv 使用灰度直方圖來(lái)判斷圖片的亮暗操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

1.如何讓計(jì)算機(jī)自動(dòng)判斷一張圖是否偏暗?或是判斷一張圖是否是處于夜晚?我們可以先把圖片轉(zhuǎn)換為灰度圖,然后根據(jù)灰度值的分布來(lái)判斷,如:

我們可以從上圖看到,晚上的圖片的灰度值是集中在前段的,如0~30多左右,我們?cè)倏匆粡埍容^明亮的圖片:

明亮的圖片的灰度直方圖是比較靠后的.

因此要判斷圖片的亮暗,只需要統(tǒng)計(jì)偏暗的像素個(gè)數(shù),再除以圖片像素的總個(gè)數(shù),得到百分比p即可,至于p大于多少即判斷為暗,則可以由你自己設(shè)置.下面給出代碼,此代碼可以在裝滿圖片的目錄里選出偏暗的圖片,然后把這些圖片保存下來(lái).

2.代碼:

import cv2;
import numpy as np;
import matplotlib.pyplot as plt;
import os;
import sys;
 
def func(img,pic_path,pic):
	#把圖片轉(zhuǎn)換為灰度圖
	gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY);
	#獲取灰度圖矩陣的行數(shù)和列數(shù)
	r,c = gray_img.shape[:2];
	dark_sum=0;	#偏暗的像素 初始化為0個(gè)
	dark_prop=0;	#偏暗像素所占比例初始化為0
	piexs_sum=r*c;	#整個(gè)弧度圖的像素個(gè)數(shù)為r*c
	
	#遍歷灰度圖的所有像素
	for row in gray_img:
		for colum in row:
			if colum<40:	#人為設(shè)置的超參數(shù),表示0~39的灰度值為暗
				dark_sum+=1;
	dark_prop=dark_sum/(piexs_sum);	
	print("dark_sum:"+str(dark_sum));
	print("piexs_sum:"+str(piexs_sum));
	print("dark_prop=dark_sum/piexs_sum:"+str(dark_prop));
	if dark_prop >=0.75:	#人為設(shè)置的超參數(shù):表示若偏暗像素所占比例超過(guò)0.78,則這張圖被認(rèn)為整體環(huán)境黑暗的圖片
		print(pic_path+" is dark!");
		cv2.imwrite("../DarkPicDir/"+pic,img);#把被認(rèn)為黑暗的圖片保存
	else:
		print(pic_path+" is bright!")
	#hist(pic_path); #若要查看圖片的灰度值分布情況,可以這個(gè)注釋解除
 
#用于顯示圖片的灰度直方圖
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("路徑錯(cuò)誤,路徑不存在!")
		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;
 
#創(chuàng)建用于存放黑暗圖片的目錄
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);

運(yùn)行命令: python3 cal.py 圖片集的路徑名

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

運(yùn)行結(jié)果:

然后進(jìn)入裝黑暗圖片的目錄里,就會(huì)看到從空目錄變成裝有黑暗圖片:

以上這篇python3+opencv 使用灰度直方圖來(lái)判斷圖片的亮暗操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 深入淺析Python中的yield關(guān)鍵字

    深入淺析Python中的yield關(guān)鍵字

    python中有一個(gè)非常有用的語(yǔ)法叫做生成器,所利用到的關(guān)鍵字就是yield。接下來(lái)腳本之家小編給大家?guī)?lái)了Python中的yield關(guān)鍵字詳細(xì)解析,感興趣的朋友參考下吧
    2018-01-01
  • Python如何操作docker redis過(guò)程解析

    Python如何操作docker redis過(guò)程解析

    這篇文章主要介紹了Python如何操作docker redis過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 通過(guò)自學(xué)python能找到工作嗎

    通過(guò)自學(xué)python能找到工作嗎

    在本篇內(nèi)容里小編給大家分享的是一篇關(guān)于通過(guò)自學(xué)python能找到工作嗎的分析內(nèi)容,對(duì)此有興趣的朋友們可以參考下。
    2020-06-06
  • Python使用sorted排序的方法小結(jié)

    Python使用sorted排序的方法小結(jié)

    這篇文章主要介紹了Python使用sorted排序的方法,結(jié)合三個(gè)實(shí)例分析了Python使用sorted方法進(jìn)行元素排序操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-07-07
  • 使用Python刷淘寶喵幣(低階入門(mén)版)

    使用Python刷淘寶喵幣(低階入門(mén)版)

    這篇文章主要介紹了使用Python刷淘寶喵幣(低階入門(mén)版)的相關(guān)資料,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Django權(quán)限機(jī)制實(shí)現(xiàn)代碼詳解

    Django權(quán)限機(jī)制實(shí)現(xiàn)代碼詳解

    這篇文章主要介紹了Django權(quán)限機(jī)制實(shí)現(xiàn)代碼詳解,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Python實(shí)現(xiàn)從線程獲取返回值

    Python實(shí)現(xiàn)從線程獲取返回值

    本文介紹了Python中線程的概念、創(chuàng)建線程的方法和在線程中獲取函數(shù)返回值的技巧,線程作為進(jìn)程中的執(zhí)行單元,可以實(shí)現(xiàn)程序的并發(fā)運(yùn)行,文章通過(guò)示例代碼展示了如何在Python中使用Thread類(lèi)創(chuàng)建線程,并講解了在線程中傳遞參數(shù)和獲取返回值的方法
    2024-09-09
  • Python檢查判斷一個(gè)數(shù)是不是另一個(gè)數(shù)的整數(shù)次冪實(shí)例深究

    Python檢查判斷一個(gè)數(shù)是不是另一個(gè)數(shù)的整數(shù)次冪實(shí)例深究

    在數(shù)學(xué)和計(jì)算中,確定一個(gè)數(shù)是否為另一個(gè)數(shù)的整數(shù)次冪是一個(gè)常見(jiàn)而重要的問(wèn)題,例如,我們可能需要判斷一個(gè)數(shù)是否是某個(gè)數(shù)的平方、立方或其他冪次,本文將探討在Python中如何實(shí)現(xiàn)這一功能,通過(guò)數(shù)學(xué)方法和算法檢查一個(gè)數(shù)是否是另一個(gè)數(shù)的整數(shù)次冪
    2023-12-12
  • python導(dǎo)出requirements.txt的幾種方法以及環(huán)境配置詳細(xì)流程

    python導(dǎo)出requirements.txt的幾種方法以及環(huán)境配置詳細(xì)流程

    這篇文章主要給大家介紹了關(guān)于python導(dǎo)出requirements.txt的幾種方法以及環(huán)境配置詳細(xì)流程,requirements.txt 文件是一個(gè)文本文件,用于列出你的Python項(xiàng)目所依賴(lài)的軟件包及其版本,需要的朋友可以參考下
    2023-11-11
  • tensorflow建立一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)的方法

    tensorflow建立一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)的方法

    本篇文章主要介紹了tensorflow建立一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02

最新評(píng)論

曲阳县| 鱼台县| 石屏县| 谢通门县| 英德市| 太和县| 丰台区| 江山市| 汽车| 盐亭县| 北安市| 涪陵区| 安西县| 弋阳县| 门头沟区| 开江县| 玉树县| 白银市| 常山县| 玉田县| 香港| 恭城| 瑞昌市| 徐州市| 同江市| 寿宁县| 茶陵县| 乌鲁木齐县| 板桥市| 循化| 乐亭县| 邵阳县| 旬阳县| 沐川县| 台中市| 龙海市| 辉县市| 新安县| 大埔县| 通辽市| 扎赉特旗|