小編寫(xiě)這篇文章的主要目的,還是來(lái)給大家講解關(guān)于Python的一些實(shí)例,比如會(huì)涉及到一些機(jī)器學(xué)習(xí)的內(nèi)容,比如去處理基本的圖像,那么,它的一個(gè)操作步驟是什么呢?下面小編給大家做出一個(gè)詳細(xì)解答。
今天小編給大家分析python中,關(guān)于機(jī)器學(xué)習(xí)的一些具體實(shí)例,如果我們來(lái)處理圖像的話,那么,都會(huì)用到opencv這個(gè)技術(shù)模塊。該模塊的組成,大致分為一下幾種類(lèi)型。
物體識(shí)別:通過(guò)視覺(jué)以及內(nèi)部存儲(chǔ)來(lái)進(jìn)行物體的判斷
圖像分割
人臉識(shí)別
汽車(chē)安全駕駛
人機(jī)交互
等等
當(dāng)然這次小編并不打算將這么高深的內(nèi)容,今天就從最基本的opencv模塊在圖像的基本操作上說(shuō)起
模塊的安裝
模塊的安裝我們通過(guò)都是通過(guò)pip命令來(lái)進(jìn)行的
pip install opencv-python pip install opencv-contrib-python
圖片的各種操作
學(xué)過(guò)線性數(shù)學(xué)的話,我們對(duì)懟矩陣就不會(huì)有陌生的感覺(jué)。圖像在本質(zhì)來(lái)說(shuō),就是由一個(gè)一個(gè)的矩陣組成的,灰度圖像是一個(gè)普通的矩陣,而彩色圖像就是一個(gè)多維矩陣,我們對(duì)于圖像的操作可以自然地轉(zhuǎn)換成是對(duì)矩陣的操作
讀取圖像
首先我們先來(lái)讀取圖像,調(diào)用的是cv2.imread()方法,它的語(yǔ)法格式如下
cv2.imread(filename,flag=1)
其中的flag參數(shù)是用來(lái)設(shè)置讀取圖像的格式,默認(rèn)的是1,表示為按照RGB三通道的格式來(lái)進(jìn)行讀取,如果設(shè)置成0,則表示以灰度圖單通道的方式來(lái)進(jìn)行讀取,
import cv2 import numpy as np img=cv2.imread('1.jpg',0)
展示圖像
cv2.imshow(name,img)
其參數(shù)解釋分別如下:
name:表示的是展示窗口的名字
img:圖片的矩陣形式
我們嘗試將上面讀取的圖片展示出來(lái),代碼如下
cv2.imshow("grey_img",img) ##如果使用了cv2.imshow()函數(shù),下面一定要跟著一個(gè)摧毀窗口的函數(shù) cv2.destroyAllWindows()
當(dāng)我們運(yùn)行了上述的代碼之后,可以發(fā)現(xiàn)在一瞬間當(dāng)中圖片彈了出來(lái),但是還沒(méi)有等我們看清楚圖片的樣子之后就直接關(guān)閉了,原因在于cv2.imshow()函數(shù)方法并沒(méi)有延時(shí)的作用,我們添加一個(gè)延時(shí)的函數(shù),代碼如下
import cv2 import numpy as np img=cv2.imread('1.jpg') cv2.imshow("grey_img",img) cv2.waitKey(0) cv2.destroyAllWindows()
output
圖片保存
最后我們將圖片保存下來(lái),這里用到的函數(shù)是cv2.imwrite(),它的語(yǔ)法格式如下
cv2.imwrite(imgname,img)
其參數(shù)解釋分別如下:
imgname:要保存的圖片的名字
img:圖片的矩陣形式
示例代碼如下
import cv2 import numpy as np img=cv2.imread('1.jpg') cv2.imshow("grey_img",img) cv2.waitKey(0) cv2.imwrite('1.png',img) cv2.destroyAllWindows()
圖片的各種屬性
有時(shí)候我們想要知道圖片的像素大小,而圖片的本質(zhì)是矩陣,例如一張1024像素*960像素的圖片,就意味著在矩陣當(dāng)中的行數(shù)就是960行,列數(shù)是1024列,在opencv模塊當(dāng)中調(diào)用的shape()函數(shù)方法,代碼如下
import cv2 img=cv2.imread('1.jpg') print(img.shape[0])#行數(shù) print(img.shape[1])#列數(shù) print(img.shape[2])#通道數(shù)
output
308
340
3
可以看到該圖片的像素是340*380,通道數(shù)是3,而針對(duì)灰度圖像而言,我們來(lái)看一下圖片的屬性,代碼如下
img=cv2.imread('1_grey.png',0) print(img.shape)
output
(308,340)
可以看到對(duì)于灰度圖像而言,我們就沒(méi)有看到通道數(shù),只有行數(shù)和列數(shù)
圖像的基本操作
最后我們來(lái)對(duì)圖像進(jìn)行一些基本操作,無(wú)非就是改變當(dāng)中的一些像素值,我們導(dǎo)入一張空白的圖片,通過(guò)修改當(dāng)中的像素值來(lái)往里面添加一個(gè)黑點(diǎn),代碼如下
import cv2 import numpy as np
img=cv2.imread('2.jpg')
(x,y,z)=img.shape
for i in range(-10,10):
for j in range(-10,10):
#圖片的正中心的位置來(lái)改變像素值,
img[int(x/2)+i,int(y/2)+j]=(0,0,0)
cv2.imshow("img",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
output
綜上所述,關(guān)于python+opencv就為大家介紹到這里了,希望能給帶來(lái)更多的幫助。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/127996.html
摘要:而這其中,很多應(yīng)用都涉及到計(jì)算機(jī)視覺(jué)這樣一個(gè)細(xì)分領(lǐng)域。常見(jiàn)的圖像處理灰度圖二值化平滑邊緣提取這幾種都屬于數(shù)字圖像處理的常用方法。對(duì)這方面知識(shí)感興趣的,可以找本數(shù)字圖像處理的相關(guān)教材系統(tǒng)地看一遍,了解數(shù)字圖像處理的基礎(chǔ)。 人工智能 ,一個(gè)已經(jīng)被談?wù)摿藥资甑母拍睿ㄗ钤缡?圖靈 在 1950年 提出)。如今這幾年,相關(guān)技術(shù)的發(fā)展速度是越來(lái)越快。高大上如無(wú)人駕駛、智能安防、AI輔助診斷,接地...
摘要:之成為圖像處理任務(wù)的最佳選擇,是因?yàn)檫@一科學(xué)編程語(yǔ)言日益普及,并且其自身免費(fèi)提供許多最先進(jìn)的圖像處理工具。該庫(kù)包含基本的圖像處理功能,包括點(diǎn)操作使用一組內(nèi)置卷積內(nèi)核進(jìn)行過(guò)濾以及顏色空間轉(zhuǎn)換。圖像處理系統(tǒng)有時(shí)被稱(chēng)為圖像處理的瑞士軍刀。 showImg(https://segmentfault.com/img/remote/1460000019442221);編譯:張秋玥、小七、蔣寶尚 本...
摘要:時(shí)間永遠(yuǎn)都過(guò)得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過(guò)去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
閱讀 919·2023-01-14 11:38
閱讀 891·2023-01-14 11:04
閱讀 750·2023-01-14 10:48
閱讀 2039·2023-01-14 10:34
閱讀 956·2023-01-14 10:24
閱讀 835·2023-01-14 10:18
閱讀 506·2023-01-14 10:09
閱讀 583·2023-01-14 10:02