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庫(kù)中的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庫(kù)中的Image模塊的convert()函數(shù)的知識(shí)請(qǐng)參考博客:http://www.dhdzp.com/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é)果。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
異步任務(wù)隊(duì)列Celery在Django中的使用方法
對(duì)于網(wǎng)站來說,給用戶一個(gè)較好的體驗(yàn)是很重要的事情,其中最重要的指標(biāo)就是網(wǎng)站的瀏覽速度。因此服務(wù)端要從各個(gè)方面對(duì)網(wǎng)站性能進(jìn)行優(yōu)化,這篇文章主要介紹了異步任務(wù)隊(duì)列Celery在Django中的使用方法,感興趣的小伙伴們可以參考一下2018-06-06
解決使用pip安裝報(bào)錯(cuò):Microsoft?Visual?C++?14.0?is?required.
對(duì)于程序員來說,經(jīng)常pip安裝自己所需要的包,大部分的包基本都能安裝,但是總會(huì)遇到包安裝不了的問題,下面這篇文章主要給大家介紹了關(guān)于如何解決使用pip安裝報(bào)錯(cuò):Microsoft?Visual?C++?14.0?is?required.的相關(guān)資料,需要的朋友可以參考下2022-09-09
Python查找字符串中包含的多個(gè)元素的實(shí)現(xiàn)
本文詳細(xì)介紹了如何使用Python查找字符串中包含的多個(gè)元素,包括基本字符串操作和使用正則表達(dá)式進(jìn)行高級(jí)搜索,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
Python使用PIL構(gòu)建圖片裁剪工具的實(shí)現(xiàn)步驟
這篇博客將為您展示如何使用 wxPython 和 PIL 庫(kù)開發(fā)一個(gè)圖片裁剪工具,本工具能夠加載圖片,允許用戶通過拖拽選擇框裁剪圖片,并保存裁剪后的結(jié)果,以下是完整代碼和實(shí)現(xiàn)步驟,需要的朋友可以參考下2025-01-01
11行Python代碼實(shí)現(xiàn)解密摩斯密碼
摩爾斯電碼是一種時(shí)通時(shí)斷的信號(hào)代碼,通過不同的排列順序來表達(dá)不同的英文字母、數(shù)字和標(biāo)點(diǎn)符號(hào)。本文將通過Python代碼來實(shí)現(xiàn)解密摩斯密碼,感興趣的可以學(xué)習(xí)一下2022-04-04
Python使用稀疏矩陣節(jié)省內(nèi)存實(shí)例
這篇文章主要介紹了Python使用稀疏矩陣節(jié)省內(nèi)存實(shí)例,矩陣中非零元素的個(gè)數(shù)遠(yuǎn)遠(yuǎn)小于矩陣元素的總數(shù),并且非零元素的分布沒有規(guī)律,則稱該矩陣為稀疏矩陣,需要的朋友可以參考下2014-06-06
實(shí)例講解Python爬取網(wǎng)頁(yè)數(shù)據(jù)
這篇文章給大家通過實(shí)例講解了Python爬取網(wǎng)頁(yè)數(shù)據(jù)的步驟以及操作過程,有興趣的朋友跟著學(xué)習(xí)下吧。2018-07-07
Python查找算法之分塊查找算法的實(shí)現(xiàn)
這篇文章主要介紹了Python查找算法之分塊查找算法的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04

