欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python3+opencv 使用灰度直方圖來判斷圖片的亮暗操作

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

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

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

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

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

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ù):表示若偏暗像素所占比例超過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 使用灰度直方圖來判斷圖片的亮暗操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python opencv鼠標(biāo)畫矩形框之cv2.rectangle()函數(shù)

    python opencv鼠標(biāo)畫矩形框之cv2.rectangle()函數(shù)

    鼠標(biāo)操作屬于用戶接口設(shè)計(jì),以前一直使用Qt來做,但是如果只需要簡(jiǎn)單的鼠標(biāo),鍵盤操作,直接調(diào)用opencv庫(kù)的函數(shù)也未嘗不可,下面這篇文章主要給大家介紹了關(guān)于python opencv鼠標(biāo)畫矩形框cv2.rectangle()函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • Form表單及django的form表單的補(bǔ)充

    Form表單及django的form表單的補(bǔ)充

    這篇文章主要介紹了Form表單及django的form表單的補(bǔ)充,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python中torch.load中的map_location參數(shù)使用

    python中torch.load中的map_location參數(shù)使用

    在PyTorch中,torch.load()函數(shù)是用于加載保存模型或張量數(shù)據(jù)的重要工具,map_location參數(shù)為我們提供了極大的靈活性,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • python子線程如何有序執(zhí)行

    python子線程如何有序執(zhí)行

    最近在寫一個(gè)項(xiàng)目,需要用到子線程,那么python子線程如何有序執(zhí)行,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • python讀取多類型文件夾中的文檔內(nèi)容

    python讀取多類型文件夾中的文檔內(nèi)容

    無論我們使用哪種編程語言,處理文件對(duì)于每個(gè)程序員都是必不可少的,本文主要介紹了python讀取多類型文件夾中的文檔內(nèi)容,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • python下載安裝requests庫(kù)的簡(jiǎn)單步驟

    python下載安裝requests庫(kù)的簡(jiǎn)單步驟

    這篇文章主要給大家介紹了關(guān)于python下載安裝requests庫(kù)的簡(jiǎn)單步驟,使用Python的requests庫(kù)下載文件是一種常見的操作,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • python+mysql實(shí)現(xiàn)個(gè)人論文管理系統(tǒng)

    python+mysql實(shí)現(xiàn)個(gè)人論文管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python+mysql實(shí)現(xiàn)個(gè)人論文管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • python合并RepeatMasker預(yù)測(cè)結(jié)果中染色體的overlap區(qū)域

    python合并RepeatMasker預(yù)測(cè)結(jié)果中染色體的overlap區(qū)域

    這篇文章主要為大家介紹了python合并RepeatMasker預(yù)測(cè)結(jié)果中染色體的overlap區(qū)域?qū)崿F(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • linux系統(tǒng)使用python監(jiān)測(cè)系統(tǒng)負(fù)載腳本分享

    linux系統(tǒng)使用python監(jiān)測(cè)系統(tǒng)負(fù)載腳本分享

    這篇文章主要介紹了linux系統(tǒng)使用python監(jiān)測(cè)系統(tǒng)負(fù)載腳本,大家參考使用吧
    2014-01-01
  • Python GUI庫(kù)Tkiner使用方法代碼示例

    Python GUI庫(kù)Tkiner使用方法代碼示例

    這篇文章主要介紹了Python GUI庫(kù)Tkiner使用方法代碼示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評(píng)論