python3讀取圖片并灰度化圖片的四種方法(OpenCV、PIL.Image、TensorFlow方法)總結(jié)
在處理圖像的時(shí)候經(jīng)常是讀取圖片以后把圖片轉(zhuǎn)換為灰度圖。作為一個(gè)剛?cè)肟拥男“?,我在這篇博客記錄了四種處理的方法。
首先導(dǎo)入包:
import numpy as np import cv2 import tensorflow as tf from PIL import Image
方法一:在使用OpenCV讀取圖片的同時(shí)將圖片轉(zhuǎn)換為灰度圖:
img = cv2.imread(imgfile, cv2.IMREAD_GRAYSCALE)
print("cv2.imread(imgfile, cv2.IMREAD_GRAYSCALE)結(jié)果如下:")
print('大?。簕}'.format(img.shape))
print("類型:%s"%type(img))
print(img)
運(yùn)行結(jié)果如下圖所示:

方法二:使用OpenCV,先讀取圖片,然后在轉(zhuǎn)換為灰度圖:
img = cv2.imread(imgfile)
#print(img.shape)
#print(img)
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #Y = 0.299R + 0.587G + 0.114B
print("cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)結(jié)果如下:")
print('大小:{}'.format(gray_img.shape))
print("類型:%s" % type(gray_img))
print(gray_img)
運(yùn)行結(jié)果如下:

方法三:使用PIL庫中的Image模塊:
img = np.array(Image.open(imgfile).convert('L'), 'f') #讀取圖片,灰度化,轉(zhuǎn)換為數(shù)組,L = 0.299R + 0.587G + 0.114B。'f'為float類型
print("Image方法的結(jié)果如下:")
print('大小:{}'.format(img.shape))
print("類型:%s" % type(img))
print(img)
運(yùn)行結(jié)果如下:

更多關(guān)于使用PIL庫中的Image模塊的convert()函數(shù)的知識請參考博客:http://www.dbjr.com.cn/kf/201603/492898.html
方法四:TensorFlow方法:
with tf.Session() as sess:
img = tf.read_file(imgfile) #讀取圖片,
img_data = tf.image.decode_jpeg(img, channels=3) #解碼
#img_data = sess.run(tf.image.decode_jpeg(img, channels=3))
img_data = sess.run(tf.image.rgb_to_grayscale(img_data)) #灰度化
print('大小:{}'.format(img_data.shape))
print("類型:%s" % type(img_data))
print(img_data)
運(yùn)行結(jié)果如下:


可以看出:TensorFlow的方法的結(jié)果與上面的三種方法的處理結(jié)果略有不同。所以在處理圖像的時(shí)候最好保持方法的一致性,最好不要用這種方法讀取完圖片然后用另一種方法處理圖片,以避免不必要的bug影響圖片處理處理結(jié)果。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Mac下Supervisor進(jìn)程監(jiān)控管理工具的安裝與配置
這篇文章主要介紹了Mac下Supervisor進(jìn)程監(jiān)控管理工具的安裝與配置,Supervisor 是由 Python 寫成,是一個(gè)類 unix 操作系統(tǒng)下的進(jìn)程監(jiān)控管理工具,本文講解MAC系統(tǒng)下的配置與安裝,需要的朋友可以參考下2014-12-12
python攻防-破解附近局域網(wǎng)WIFI密碼實(shí)現(xiàn)上網(wǎng)自由
本文將記錄學(xué)習(xí)如何通過 Python 腳本實(shí)破解附近局域網(wǎng) WIFI 密碼的暴力破解,隨時(shí)隨地免費(fèi)蹭網(wǎng),再也不被WiFi密碼困擾,實(shí)現(xiàn)蹭網(wǎng)自由2021-08-08
40行Python代碼實(shí)現(xiàn)天氣預(yù)報(bào)和每日雞湯推送功能
這篇文章主要介紹了通過40行Python代碼實(shí)現(xiàn)天氣預(yù)報(bào)和每日雞湯推送功能,代碼簡單易懂,非常不錯(cuò)具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2020-02-02
python爬蟲 基于requests模塊發(fā)起ajax的get請求實(shí)現(xiàn)解析
這篇文章主要介紹了python爬蟲 基于requests模塊發(fā)起ajax的get請求實(shí)現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
Python實(shí)現(xiàn)功能全面的學(xué)生管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)功能全面的學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
python中Selenium+Webdriver實(shí)現(xiàn)自動化登錄
本文主要介紹了python中Selenium+Webdriver實(shí)現(xiàn)自動化登錄,包括測試環(huán)境的搭建、代碼編寫、以及注意事項(xiàng)等,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
Python教程通過公共鍵對不同字典進(jìn)行排序示例詳解
本篇文章是Python教程基礎(chǔ)篇,通過一些示例為大家講解Python通過公共鍵對不同字典進(jìn)行排序的方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09

