python+OpenCV图像处理(一)读取、复制、显示、保存
前 言
? ? ? ?從2017年入坑人工智能領域開始,就被這一領域深深的所吸引,雖然到現在已經踩了不少坑,但總算有了不少的收獲,深感不虛此行,借助強大的python讓我快速的向著這一領域靠近,現在流行比較廣的人工智能應用,比如:圖像識別,語音識別,文本情感分析,人體行為分析等等。在金融、安全、智能推薦等等,凡是我們能想到的領域,都可以安插人工智能的應用,對推進萬物互聯、萬物互通的未來智能具有深刻影響,可以說是大勢所趨。
? ? ? 由于人類語言的千變萬化,和對語言分析應用的單一,導致在語音、語義方面遠不如圖像分析應用的廣泛。OpenCV是一個專門對圖像進行處理的庫,在此后的學習中,我們會深刻認識到它的強大。借助強大的互聯網,集萬眾之所長,完成學習任務。
圖像的讀取、復制、顯示、保存
(一)認識圖像、讀取圖像
所謂的圖像就是一個數組,所有對圖像的處理就是對數字的處理
# 導入包 import cv2 import numpy as np img = cv2.imread('rose.jpg') print(img) print(np.shape(img))輸出結果為:
[[[ 65 134 107][ 65 134 107][ 65 134 107]..., [ 33 90 69][ 33 90 69][ 31 90 69]][[ 64 133 106][ 64 133 106][ 64 133 106]..., [ 33 90 69][ 33 90 69][ 31 90 69]][[ 64 132 107][ 64 132 107][ 63 131 106]..., [ 33 90 69][ 33 90 69][ 31 90 69]]..., [[ 1 75 49][ 2 76 50][ 0 77 50]..., [ 24 62 66][ 25 63 67][ 27 65 69]][[ 1 75 49][ 2 76 50][ 0 77 50]..., [ 19 57 61][ 21 59 63][ 22 60 64]][[ 1 75 49][ 2 76 50][ 0 77 50]..., [ 17 55 59][ 19 57 61][ 20 58 62]]] (972, 1024, 3)(二)顯示圖像
接下來我們來讓讀取的圖像顯示出來,剛才的圖片太大了,我將圖片弄小了一些
# 讀取圖片 img = cv2.imread('rose1.jpg') # 先創建一個窗口 cv2.namedWindow('Image') # 在窗口中顯示圖像 cv2.imshow('Image', img) # 最后還要寫一句代碼,這樣就可以使窗口始終保持住 cv2.waitKey(0)運行結果為:
?
在讀取圖片中,imread(‘圖片地址’,‘模式參數’)函數可以來控制所讀取圖片的模式。
模式參數:
0:讀入的為灰度圖像(即使讀入的為彩色圖像也將轉化為灰度圖像)
1:讀入的為彩色圖像(默認)
img = cv2.imread('rose1.jpg', 0)?
cv2.destroyAllWindows()最后別忘了釋放窗口,養成良好習慣。
(三)復制圖像
img1 = img.copy()(四)保存圖像
保存圖像也非常簡單
cv2.imwrite('rose_copy.jpg', img1)第一個參數是保存圖像的地址以及文件的名字,第二個參數是所要保存的圖像數組。
其實它還有第三個參數,針對特定的圖像格式,對于JPEG,其表示的是圖片的quality,用0-100的整數表示,默認為95。當然,你如果把參數設置的超過100也不會出錯,但到100已經達到圖片本身的最高質量了。cv2.IMWRITE_JPEG_QUALITY的類型為int類型,符合圖像數組為整數的要求,不用再更改類型。
cv2.imwrite('rose_copy1.jpg', img1, [cv2.IMWRITE_JPEG_QUALITY, 2])?
對于PNG,第三個參數表示的是壓縮級別。cv2.IMWRITE_PNG_COMPRESSION,從0到9,壓縮級別越高,圖像尺寸越小。默認級別為3.
cv2.imwrite("rose1_test.png", img, [cv2.IMWRITE_PNG_COMPRESSION, 0]) cv2.imwrite("rose2_test.png", img, [cv2.IMWRITE_PNG_COMPRESSION, 9])?
?
?
?
其實,還有很多有趣的操作,就不介紹了,需要用的時候在進行學習,知道這兩個比較常用的。
?
總結
以上是生活随笔為你收集整理的python+OpenCV图像处理(一)读取、复制、显示、保存的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: np.random.get_state(
- 下一篇: Hadoop分布式集群搭建详细过程