python+OpenCV图像处理(一)读取、复制、显示、保存
前 言
? ? ? ?從2017年入坑人工智能領(lǐng)域開(kāi)始,就被這一領(lǐng)域深深的所吸引,雖然到現(xiàn)在已經(jīng)踩了不少坑,但總算有了不少的收獲,深感不虛此行,借助強(qiáng)大的python讓我快速的向著這一領(lǐng)域靠近,現(xiàn)在流行比較廣的人工智能應(yīng)用,比如:圖像識(shí)別,語(yǔ)音識(shí)別,文本情感分析,人體行為分析等等。在金融、安全、智能推薦等等,凡是我們能想到的領(lǐng)域,都可以安插人工智能的應(yīng)用,對(duì)推進(jìn)萬(wàn)物互聯(lián)、萬(wàn)物互通的未來(lái)智能具有深刻影響,可以說(shuō)是大勢(shì)所趨。
? ? ? 由于人類(lèi)語(yǔ)言的千變?nèi)f化,和對(duì)語(yǔ)言分析應(yīng)用的單一,導(dǎo)致在語(yǔ)音、語(yǔ)義方面遠(yuǎn)不如圖像分析應(yīng)用的廣泛。OpenCV是一個(gè)專(zhuān)門(mén)對(duì)圖像進(jìn)行處理的庫(kù),在此后的學(xué)習(xí)中,我們會(huì)深刻認(rèn)識(shí)到它的強(qiáng)大。借助強(qiáng)大的互聯(lián)網(wǎng),集萬(wàn)眾之所長(zhǎng),完成學(xué)習(xí)任務(wù)。
圖像的讀取、復(fù)制、顯示、保存
(一)認(rèn)識(shí)圖像、讀取圖像
所謂的圖像就是一個(gè)數(shù)組,所有對(duì)圖像的處理就是對(duì)數(shù)字的處理
# 導(dǎo)入包 import cv2 import numpy as np img = cv2.imread('rose.jpg') print(img) print(np.shape(img))輸出結(jié)果為:
[[[ 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)(二)顯示圖像
接下來(lái)我們來(lái)讓讀取的圖像顯示出來(lái),剛才的圖片太大了,我將圖片弄小了一些
# 讀取圖片 img = cv2.imread('rose1.jpg') # 先創(chuàng)建一個(gè)窗口 cv2.namedWindow('Image') # 在窗口中顯示圖像 cv2.imshow('Image', img) # 最后還要寫(xiě)一句代碼,這樣就可以使窗口始終保持住 cv2.waitKey(0)運(yùn)行結(jié)果為:
?
在讀取圖片中,imread(‘圖片地址’,‘模式參數(shù)’)函數(shù)可以來(lái)控制所讀取圖片的模式。
模式參數(shù):
0:讀入的為灰度圖像(即使讀入的為彩色圖像也將轉(zhuǎn)化為灰度圖像)
1:讀入的為彩色圖像(默認(rèn))
img = cv2.imread('rose1.jpg', 0)?
cv2.destroyAllWindows()最后別忘了釋放窗口,養(yǎng)成良好習(xí)慣。
(三)復(fù)制圖像
img1 = img.copy()(四)保存圖像
保存圖像也非常簡(jiǎn)單
cv2.imwrite('rose_copy.jpg', img1)第一個(gè)參數(shù)是保存圖像的地址以及文件的名字,第二個(gè)參數(shù)是所要保存的圖像數(shù)組。
其實(shí)它還有第三個(gè)參數(shù),針對(duì)特定的圖像格式,對(duì)于JPEG,其表示的是圖片的quality,用0-100的整數(shù)表示,默認(rèn)為95。當(dāng)然,你如果把參數(shù)設(shè)置的超過(guò)100也不會(huì)出錯(cuò),但到100已經(jīng)達(dá)到圖片本身的最高質(zhì)量了。cv2.IMWRITE_JPEG_QUALITY的類(lèi)型為int類(lèi)型,符合圖像數(shù)組為整數(shù)的要求,不用再更改類(lèi)型。
cv2.imwrite('rose_copy1.jpg', img1, [cv2.IMWRITE_JPEG_QUALITY, 2])?
對(duì)于PNG,第三個(gè)參數(shù)表示的是壓縮級(jí)別。cv2.IMWRITE_PNG_COMPRESSION,從0到9,壓縮級(jí)別越高,圖像尺寸越小。默認(rèn)級(jí)別為3.
cv2.imwrite("rose1_test.png", img, [cv2.IMWRITE_PNG_COMPRESSION, 0]) cv2.imwrite("rose2_test.png", img, [cv2.IMWRITE_PNG_COMPRESSION, 9])?
?
?
?
其實(shí),還有很多有趣的操作,就不介紹了,需要用的時(shí)候在進(jìn)行學(xué)習(xí),知道這兩個(gè)比較常用的。
?
總結(jié)
以上是生活随笔為你收集整理的python+OpenCV图像处理(一)读取、复制、显示、保存的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: np.random.get_state(
- 下一篇: python将数据集分成训练样本和类标签