內容來自OpenCV-Python Tutorials 自己翻譯整理 目標:
讀取圖片,顯示圖片,保存圖片學習以下函數 cv2.imread(), cv2.imshow() , cv2.imwrite()使用Matplotlib顯示圖片讀取圖片:
使用cv2.imread() 函數讀取圖片,圖片的位置應該是在當前的目錄下 該函數有兩個參數,第一個參數是圖片名稱,第二個參數是使用哪種方式讀取圖片。 第二個參數有如下三種
cv2.IMREAD_COLOR 加載一個彩色圖片,圖片的透明度會被忽律,也是缺省參數。cv2.IMREAD_GRAYSCALE 加載黑白圖片cv2.IMREAD_UNCHANGED 加載包含alpha通道的圖片上面三個參數可以用1 0 -1表示
#!/usr/bin/env python# coding=utf-8import cv2import numpy as np#把圖片加載為黑白圖片img = cv2.imread('test.jpg',0)如果圖片的路徑錯誤,不會拋出錯誤,什么也不輸出
顯示圖片: 使用 cv2.imshow()函數在窗口中顯示圖片,窗口的尺寸自動適應圖片大小,函數中有兩個參數,第一個參數是窗口名稱,第二個參數是加載的圖片,可以設置不同窗口名,創建多個窗口。
cv2.imshow('image',img)cv2.waitKey(0)cv2.destroyAllWindows()cv2.waitKey() 函數綁定鍵盤,參數是毫秒,該函數等待指定的毫秒來接受鍵盤輸入,按下任意鍵繼續
cv2.destroyAllWindows() 銷毀所有窗口
想銷毀指定窗口可以使用 cv2.destroyWindow()函數,參數是想要銷毀的窗口名稱
寫入圖片: 使用 cv2.imwrite() 函數保存圖片 該函數中有兩個參數,第一個是文件名,第二個是想要保存的圖片
#!/usr/bin/env python# coding=utf-8import cv2import numpy as npimg = cv2.imread('test.jpg',0)cv2.imshow('image',img)k = cv2.waitKey(0)if k == 27: # wait for ESC key to exit cv2.destroyAllWindows()elif k == ord('s'): # wait for 's' key to save and exit cv2.imwrite('messigray.png',img) cv2.destroyAllWindows()效果
使用Matplotlib庫:
#!/usr/bin/env python# coding=utf-8import cv2import numpy as npfrom matplotlib import pyplot as pltimg=cv2.imread("test.jpg",0)plt.imshow(img,cmap='gray',interpolation='bicubic')plt.xticks([]),plt.yticks([])plt.show()注意: 彩色圖片使用opencv加載是使用BGR模式,但是使用Matplotlib庫是用RGB模式,所以彩色圖片不會在Matplotlib中正確的顯示,如果使用opencv讀取圖片。 原圖 使用Matplotlib讀取的圖片
-_-藍色的多肉變成黃色的了 解決方法
#!/usr/bin/env python# coding=utf-8import cv2import numpy as npfrom matplotlib import pyplot as pltimg=cv2.imread("test.jpg")b,g,r=cv2.split(img)img2 = cv2.merge([r,g,b])plt.imshow(img2)plt.xticks([]),plt.yticks([])plt.show()新聞熱點
疑難解答