亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用tensorflow將圖片灰度化以及遇到的坑解決

 更新時(shí)間:2024年02月27日 15:02:48   作者:hello689  
這篇文章主要介紹了使用tensorflow將圖片灰度化以及遇到的坑解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

tensorflow將圖片灰度化及遇到的坑

用tensorflow將圖片灰度化,很簡(jiǎn)單的一個(gè)問(wèn)題,幾句代碼就OK了。

但是這里邊有很多坑,稍不留神,半天都不一定找得到原因。

我下面說(shuō)說(shuō)我遇到的坑

先給代碼,再介紹我遇到的坑:

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
from keras_preprocessing.image import load_img,img_to_array
%matplotlib inline
 
 
image_name = 'cat1.jpg'
image = load_img(image_name)
#將圖片轉(zhuǎn)換為數(shù)組
image = img_to_array(image)
#轉(zhuǎn)為黑白
image = tf.image.rgb_to_grayscale(image)
image = tf.squeeze(image,2)
plt.imshow(image)

步驟很簡(jiǎn)單:

  • 讀取彩色圖片
  • 轉(zhuǎn)換為黑白圖片
  • 顯示這個(gè)黑白圖片

就這簡(jiǎn)簡(jiǎn)單單的幾步,我卻遇到了很多問(wèn)題,不過(guò)在解決問(wèn)題的過(guò)程中又學(xué)到了很多,還是很有收獲的。 

坑一

#坑一、不將image轉(zhuǎn)換為數(shù)組,直接用rgb_to_grayscale方法,將圖片轉(zhuǎn)為灰度圖片
image_name = 'cat1.jpg'
image = load_img(image_name)
#轉(zhuǎn)為黑白
image = tf.image.rgb_to_grayscale(image)

執(zhí)行上邊代碼會(huì)報(bào)錯(cuò)如下圖,不能直接將一個(gè)圖片轉(zhuǎn)化為一個(gè)tensor。

這里需要先將image對(duì)象轉(zhuǎn)化為數(shù)組array。

然后通過(guò)百度學(xué)會(huì)了img_to_array()方法。

圖1、坑一錯(cuò)誤信息

坑二

#坑二:最后圖片無(wú)法顯示
image_name = 'cat1.jpg'
image = load_img(image_name)
#將圖片轉(zhuǎn)換為數(shù)組
image = img_to_array(image)
#轉(zhuǎn)為黑白
image = tf.image.rgb_to_grayscale(image)
plt.imshow(image)

錯(cuò)誤信息:

圖2、坑二錯(cuò)誤

原圖是三維的,圖片維度為(480,500,3),轉(zhuǎn)為黑白后圖片的shape變成了(480,500,1)。

猜測(cè),黑白的是不是就兩維。于是進(jìn)行了降維操作 學(xué)習(xí)了tf.squeeze()方法, 最后降維后,大功告成,結(jié)束!

補(bǔ)充

我當(dāng)時(shí)看了image的類(lèi)型,本以為是因?yàn)檗D(zhuǎn)換為array后,里邊值的類(lèi)型為float,所以才不會(huì)顯示圖片。

當(dāng)時(shí)就把float類(lèi)型轉(zhuǎn)為了int型。后來(lái)才發(fā)現(xiàn),其實(shí)不管array里的值類(lèi)型是float還是int,都會(huì)顯示。

所以第一版成功運(yùn)行的代碼是把圖片類(lèi)型也轉(zhuǎn)換了,代碼如下,第六行多了一句將圖片轉(zhuǎn)為int型的代碼。

image_name = 'cat1.jpg'
image = load_img(image_name)
plt.imshow(image)
#將圖片轉(zhuǎn)換為數(shù)組
image = img_to_array(image)
image = image.astype(dtype='uint8')
#轉(zhuǎn)為黑白
image = tf.image.rgb_to_grayscale(image)
#降維
image = tf.squeeze(image,2)
plt.imshow(image)

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論