python中opencv的使用方法是什么

這篇文章將為大家詳細(xì)講解有關(guān)python中opencv的使用方法是什么,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

永和網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),永和網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為永和上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的永和做網(wǎng)站的公司定做!

OpenCV是一個(gè)旨在解決計(jì)算機(jī)視覺(jué)問(wèn)題的Python庫(kù)。OpenCV最初由Intel在1999年開(kāi)發(fā),但是后來(lái)由Willow Garage資助。它支持很多編程語(yǔ)言,如C++,Python,Java等等。它也支持多種平臺(tái),包括Windows,Linux和MacOS。

OpenCV Python只是一個(gè)與Python一起使用的原始C++庫(kù)的包裝類。通過(guò)使用它,所有OpenCV數(shù)組結(jié)構(gòu)都能被轉(zhuǎn)化為NumPy數(shù)組或從NumPy數(shù)組轉(zhuǎn)化而來(lái)。這樣就可以輕松地將其與其他使用NumPy的庫(kù)集成。例如,SciPy和Matplotlib等庫(kù)。

OpenCV的基礎(chǔ)操作?

Opencv能完成以下從加載圖像到調(diào)整大小等基本操作:

使用OpenCV加載圖片

查看圖片形狀/分辨率

顯示圖片

調(diào)整圖像大小

1. 使用OpenCV加載圖片

Import cv2  
 # colored Image  
Img = cv2.imread ("Penguins.jpg",1)  
 # Black and White (gray scale)  
Img_1 = cv2.imread ("Penguins.jpg",0)

如以上代碼所示,第一個(gè)要求是導(dǎo)入OpenCV模塊。

之后,我們可以用imread模塊讀取圖片。參數(shù)中的1代表這是一個(gè)彩色圖片。如果這個(gè)參數(shù)的值是0,就意味著這個(gè)將被導(dǎo)入的圖片是黑白圖片。這里的圖片名稱是“Penguins”。很簡(jiǎn)單吧?

2. 查看圖片形狀/分辨率

我們可以使用shape子函數(shù)來(lái)輸出圖片的形狀??纯匆韵麓a:

Import cv2  
# Black and White (gray scale)  
Img = cv2.imread ("Penguins.jpg",0)  
Print(img.shape)

對(duì)于圖片的形狀,我們指的是NumPy數(shù)組的形狀。執(zhí)行代碼之后你將會(huì)看到這個(gè)矩陣由768行和1024列組成。

3. 顯示圖片

使用OpenCV顯示圖片非常簡(jiǎn)單和直接。思考以下圖片:

import cv2  
 
# Black and White (gray scale)  
Img = cv2.imread ("Penguins.jpg",0)  
cv2.imshow("Penguins", img)  
 
cv2.waitKey(0)  
# cv2.waitKey(2000)  
cv2.destroyAllWindows()

正如你所見(jiàn),我們首先使用imread導(dǎo)入圖片。我們需要一個(gè)輸出窗口來(lái)顯示這個(gè)圖片,對(duì)吧? 

然后,我們等待用戶事件。waitKey使窗口保持靜態(tài)直到用戶按下一個(gè)鍵。傳入的參數(shù)是以毫秒為單位的時(shí)間。

最后,我們根據(jù)waitForKey的參數(shù)使用destroyAllWindows關(guān)閉窗口。

4. 調(diào)整圖像大小

類似地,調(diào)整圖像大小非常簡(jiǎn)單。 這里有另一個(gè)代碼段:

import cv2  
# Black and White (gray scale)  
img = cv2.imread ("Penguins.jpg",0)  
resized_image = cv2.resize(img, (650,500))  
cv2.imshow("Penguins", resized_image)  
cv2.waitKey(0)  
cv2.destroyAllWindows()

這里,resize函數(shù)用于將圖像大小調(diào)整為所需的形狀。這里的參數(shù)是新調(diào)整大小后的圖像的形狀。

與之前的代碼相比,剩下的代碼非常簡(jiǎn)單,對(duì)嗎?

我相信你們對(duì)企鵝很好奇,這是我們想要輸出的圖片!

這是另一個(gè)向resize函數(shù)傳遞參數(shù)的方法??纯聪旅娴谋硎痉椒ǎ?/p>

Resized_image = cv2.resize(img, int(img.shape[1]/2), int(img.shape[0]/2)))

這里,我們得到的新圖像大小是原始圖像的一半。

使用OpenCV進(jìn)行人臉檢測(cè)

這看起來(lái)很復(fù)雜,但實(shí)際上很容易。 讓我?guī)懔私庹麄€(gè)過(guò)程,然后你也會(huì)有同樣的感受。

第一步:想一想我們的先決條件。我們首先需要一個(gè)圖像。然后,我們需要?jiǎng)?chuàng)建一個(gè)級(jí)聯(lián)分類器,它最后會(huì)給我們提供面部特征。

第二步:這一步要使用到OpenCV讀取圖像和特征文件。所以這個(gè)時(shí)候,原始數(shù)據(jù)點(diǎn)是NumPy數(shù)組的形式。

我們要做的就是搜索面部 NumPy n維數(shù)組的行和列的值。這是具有面部矩形坐標(biāo)的數(shù)組。

第三步:最后一步是使用矩形面框顯示圖像。

看看下面的圖片,這里我以圖片的形式總結(jié)了上述的三個(gè)步驟以便于閱讀:

非常直接明了,對(duì)吧?

python中opencv的使用方法是什么

首先,如之前所述,我們創(chuàng)建CascadeClassifier對(duì)象來(lái)提取面部特征。包含面部特征的XML文件路徑是此處的參數(shù)。

下一步是讀取一個(gè)包含面部的圖片,并且使用COLOR_BGR2GREY將其轉(zhuǎn)化為黑白圖片。接下來(lái),我們搜索圖像的坐標(biāo)。這是使用detectMultiScale來(lái)實(shí)現(xiàn)的。

你問(wèn)什么坐標(biāo)?它是面部矩形的坐標(biāo)。scaleFactor被用來(lái)減小5%的形狀值,直到找到面部。因此,總的來(lái)說(shuō),值越小,準(zhǔn)確度越高。

最后,這張臉被顯示到窗口。

給識(shí)別的人臉添加矩形面框

這個(gè)邏輯很簡(jiǎn)單——就像使用for循環(huán)語(yǔ)句一樣簡(jiǎn)單??纯聪旅娴膱D片:

python中opencv的使用方法是什么

我們通過(guò)傳遞參數(shù)(比如圖片對(duì)象,輪廓框的RGB值和矩形的寬度),使用cv2.rectangle來(lái)定義方法以創(chuàng)建一個(gè)矩形。

讓我們來(lái)看看面部檢測(cè)的完整代碼:

import cv2  
# Create a CascadeClassifier Object  
face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")  
# Reading the image as it is  
img = cv2.imread("photo.jpg") 
# Reading the image as gray scale image  
gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)  
# Search the co-ordintes of the image  
faces = face_cascade.detectMultiScale(gray_img, scaleFactor = 1.05,  minNeighbors=5)  
for x,y,w,h in faces:  
    img = cv2.rectangle(img, (x,y), (x+w,y+h),(0,255,0),3)  
resized = cv2.resize(img, (int(img.shape[1]/7),int(img.shape[0]/7)))   
cv2.imshow("Gray", resized)  
cv2.waitKey(0)  
cv2.destroyAllWindows()

關(guān)于python中opencv的使用方法是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

當(dāng)前名稱:python中opencv的使用方法是什么
分享URL:http://muchs.cn/article6/jiosig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)微信小程序、響應(yīng)式網(wǎng)站、定制開(kāi)發(fā)、網(wǎng)站營(yíng)銷網(wǎng)頁(yè)設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化