Python影像處理(2):映像顯示

來源:互聯網
上載者:User

標籤:vs2013   opencv   python   影像處理   

快樂蝦

http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651)

歡迎轉載,但請保留作者資訊



1.    OpenCV映像顯示


之前用cv2.imshow顯示映像,但這種方式無法顯示的視窗無法調整大小,當顯示的映像比較大的時候就無法看到完整的映像,因此我們先建立視窗再顯示映像:


import cv2img = cv2.imread(‘f:\\tmp\\cotton.jpg‘)win = cv2.namedWindow(‘test win‘, flags=0)cv2.imshow(‘test win‘, img)cv2.waitKey(0)

opencv採用視窗名稱來訪問視窗,而不是視窗控制代碼之類的東西。


flags為0表示視窗可以用滑鼠來改變大小,此時顯示的映像也跟著視窗大小變化,需要注意的是它可能會導致映像的變形:



cv2.namedWindow最終使用下面的c函數完成具體的功能:


/* create window */CVAPI(int) cvNamedWindow( const char* name, int flags CV_DEFAULT(CV_WINDOW_AUTOSIZE) );

這裡的flags可以接受的值為:

    //These 2 flags are used by cvNamedWindow and cvSet/GetWindowProperty    CV_WINDOW_NORMAL       = 0x00000000, //the user can resize the window (no constraint)  / also use to switch a fullscreen window to a normal size    CV_WINDOW_AUTOSIZE     = 0x00000001, //the user cannot resize the window, the size is constrainted by the image displayed    CV_WINDOW_OPENGL       = 0x00001000, //window with opengl support

2.    matplotlib映像顯示


接下來試試用matplotlib顯示映像:

import cv2import matplotlib.pyplot as pltimg = cv2.imread(‘f:\\tmp\\cotton.jpg‘)plt.imshow(img)plt.show()

映像的顏色有誤:



將第1通道和第3通道交換後顯示:

import numpy as npimport cv2import matplotlib.pyplot as pltimg = cv2.imread(‘f:\\tmp\\cotton.jpg‘)(r, g, b)=cv2.split(img)img=cv2.merge([b,g,r])plt.imshow(img)plt.show()

這回正常了:



從前面可以看到cv2.imshow與plt.imshow的差異。cv2.imshow顯示的映像視窗難以按比例縮放,但如果用plt.imshow則需要交換第一個色彩通道和第三個色彩通道。 


3.    用plt讀取映像


再比較一下plt.imread和cv2.imread的差別:


import numpy as npimport cv2import matplotlib.pyplot as pltimg1 = cv2.imread(‘f:\\tmp\\cotton.jpg‘)img2 = plt.imread(‘f:\\tmp\\cotton.jpg‘)plt.subplot(121)plt.imshow(img1)plt.subplot(122)plt.imshow(img2)plt.show()

上述代碼讀取同一張映像並用相同的方法顯示,差異還是在色彩通道上:




4.    matplotlib顯示灰階圖


對於只有一個色彩通道的映像,matplotlib可以指定一個map,將單個色彩通道的映像轉換為彩色映像。


matplotlib支援下面的map。


In [8]: import matplotlib.cm as cmIn [9]: cm.cmap_dOut[9]: {u‘Accent‘: <matplotlib.colors.LinearSegmentedColormap at 0x22cbf50>, u‘Accent_r‘: <matplotlib.colors.LinearSegmentedColormap at 0x22d7150>,.......u‘winter‘: <matplotlib.colors.LinearSegmentedColormap at 0x22d7290>, u‘winter_r‘: <matplotlib.colors.LinearSegmentedColormap at 0x22cb910>}

選擇一個map進行顯示:

import numpy as npimport cv2import matplotlib.pyplot as pltimport matplotlib.cm as cmimg = plt.imread(‘f:\\tmp\\cotton.jpg‘)img = img[:,:,0]plt.subplot(121)plt.imshow(img)plt.subplot(122)#plt.colorbar()plt.imshow(img, cmap=cm.get_cmap(‘winter‘))plt.show()

結果如下:



















??

Python影像處理(2):映像顯示

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.