溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

淺談python圖片處理Image和skimage的區(qū)別

發(fā)布時(shí)間:2020-10-25 21:41:15 來(lái)源:腳本之家 閱讀:187 作者:野孩子1991 欄目:開(kāi)發(fā)技術(shù)

做cnn的難免要做大量的圖片處理。由于接手項(xiàng)目時(shí)間不長(zhǎng),且是新項(xiàng)目,前段時(shí)間寫(xiě)代碼都很趕,現(xiàn)在稍微總結(jié)(恩,總結(jié)是個(gè)好習(xí)慣)。

1,首先安裝python-Image和python-skimage、python-matplotlib。

  簡(jiǎn)單代碼:

import Image as img
import os
from matplotlib import pyplot as plot
from skimage import io,transform
import argparse
 
def show_data(data):
  fig = plot.figure()
  ax = fig.add_subplot(121)
  ax.imshow(data, cmap='gray')
  ax2 = fig.add_subplot(122)
  ax2.imshow(data)
  plot.show()
if __name__ == "__main__":
  parse = argparse.ArgumentParser()
  parse.add_argument('--picpath', help = "the picture' path")
  args = parse.parse_args()
  img_file1 = img.open(args.picpath)#Image讀圖片
  one_pixel = img_file1.getpixel((0,0))[0]
  print "picture's first pixe: ",one_pixel 
  print "the picture's size: ", img_file1.size#Image讀出來(lái)的size是高寬
  show_data(img_file1)
  img_file2 = io.imread(args.picpath)#skimage讀圖片
  show_data(img_file2)
  print "picture's first pixel: ", img_file2[0][0][0]
  print "the picture's shape: ", img_file2.shape#skimage讀出來(lái)的shape是高,寬, 通道

調(diào)用及輸出:

淺談python圖片處理Image和skimage的區(qū)別

其實(shí)Image讀出來(lái)的是PIL什么的類(lèi)型,而skimage.io讀出來(lái)的數(shù)據(jù)是numpy格式的。如果想直接看Image和skimage讀出來(lái)圖片的區(qū)別,可以直接輸出它們讀圖片以后的返回結(jié)果。

2.Image和skimage讀圖片:

img_file1 = img.open(args.picpath)
img_file2 = io.imread(args.picpath)

3.讀圖片后數(shù)據(jù)的大?。?/p>

print "the picture's size: ", img_file1.size
print "the picture's shape: ", img_file2.shape

4.得到像素:

one_pixel = img_file1.getpixel((0,0))[0]
img_file2[0][0][0]

分析:

1.從3的輸出可以看出img讀圖片的大小是圖片的(height,width);

skimage的是(height,width, channel)[這也是為什么caffe在單獨(dú)測(cè)試時(shí)要要在代碼中設(shè)置:transformer.set_transpose('data',(2,0,1)),因?yàn)閏affe可以處理的圖片的數(shù)據(jù)格式是(channel,height,width),所以要轉(zhuǎn)換數(shù)據(jù)啊]

2.img讀出來(lái)的圖片獲得某點(diǎn)像素用getpixel((h,w))可以直接返回這個(gè)點(diǎn)三個(gè)通道的像素值

skimage讀出來(lái)的圖片可以直接img_file2[0][0][0]獲得,但是一定記住它的格式,并不是你想的(channel,height,width)

關(guān)于matplotlib簡(jiǎn)單的畫(huà)圖請(qǐng)關(guān)注下篇~

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI