新聞中心
OpenCV是一個旨在解決計算機視覺問題的python庫。OpenCV最初由Intel在1999年開發(fā),但是后來由Willow Garage資助。它支持很多編程語言,如C++,Python,Java等等。它也支持多種平臺,包括Windows,Linux和MacOS。

創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的姜堰網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
OpenCV Python只是一個與Python一起使用的原始C++庫的包裝類。通過使用它,所有OpenCV數(shù)組結(jié)構(gòu)都能被轉(zhuǎn)化為NumPy數(shù)組或從NumPy數(shù)組轉(zhuǎn)化而來。這樣就可以輕松地將其與其他使用NumPy的庫集成。例如,SciPy和Matplotlib等庫。
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)如以上代碼所示,第一個要求是導(dǎo)入OpenCV模塊。
之后,我們可以用imread模塊讀取圖片。參數(shù)中的1代表這是一個彩色圖片。如果這個參數(shù)的值是0,就意味著這個將被導(dǎo)入的圖片是黑白圖片。這里的圖片名稱是“Penguins”。很簡單吧?
2. 查看圖片形狀/分辨率
我們可以使用shape子函數(shù)來輸出圖片的形狀??纯匆韵麓a:
Import cv2
# Black and White (gray scale)
Img = cv2.imread ("Penguins.jpg",0)
Print(img.shape)對于圖片的形狀,我們指的是NumPy數(shù)組的形狀。執(zhí)行代碼之后你將會看到這個矩陣由768行和1024列組成。
3. 顯示圖片
使用OpenCV顯示圖片非常簡單和直接。思考以下圖片:
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()正如你所見,我們首先使用imread導(dǎo)入圖片。我們需要一個輸出窗口來顯示這個圖片,對吧?
然后,我們等待用戶事件。waitKey使窗口保持靜態(tài)直到用戶按下一個鍵。傳入的參數(shù)是以毫秒為單位的時間。
最后,我們根據(jù)waitForKey的參數(shù)使用destroyAllWindows關(guān)閉窗口。
4. 調(diào)整圖像大小
類似地,調(diào)整圖像大小非常簡單。 這里有另一個代碼段:
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)整大小后的圖像的形狀。
與之前的代碼相比,剩下的代碼非常簡單,對嗎?
我相信你們對企鵝很好奇,這是我們想要輸出的圖片!
這是另一個向resize函數(shù)傳遞參數(shù)的方法??纯聪旅娴谋硎痉椒ǎ?/p>
Resized_image = cv2.resize(img, int(img.shape[1]/2), int(img.shape[0]/2)))
這里,我們得到的新圖像大小是原始圖像的一半。
使用OpenCV進(jìn)行人臉檢測
這看起來很復(fù)雜,但實際上很容易。 讓我?guī)懔私庹麄€過程,然后你也會有同樣的感受。
第一步:想一想我們的先決條件。我們首先需要一個圖像。然后,我們需要創(chuàng)建一個級聯(lián)分類器,它最后會給我們提供面部特征。
第二步:這一步要使用到OpenCV讀取圖像和特征文件。所以這個時候,原始數(shù)據(jù)點是NumPy數(shù)組的形式。
我們要做的就是搜索面部 NumPy n維數(shù)組的行和列的值。這是具有面部矩形坐標(biāo)的數(shù)組。
第三步:最后一步是使用矩形面框顯示圖像。
看看下面的圖片,這里我以圖片的形式總結(jié)了上述的三個步驟以便于閱讀:
非常直接明了,對吧?
首先,如之前所述,我們創(chuàng)建CascadeClassifier對象來提取面部特征。包含面部特征的XML文件路徑是此處的參數(shù)。
下一步是讀取一個包含面部的圖片,并且使用COLOR_BGR2GREY將其轉(zhuǎn)化為黑白圖片。接下來,我們搜索圖像的坐標(biāo)。這是使用detectMultiScale來實現(xiàn)的。
你問什么坐標(biāo)?它是面部矩形的坐標(biāo)。scaleFactor被用來減小5%的形狀值,直到找到面部。因此,總的來說,值越小,準(zhǔn)確度越高。
最后,這張臉被顯示到窗口。
給識別的人臉添加矩形面框
這個邏輯很簡單——就像使用for循環(huán)語句一樣簡單??纯聪旅娴膱D片:
我們通過傳遞參數(shù)(比如圖片對象,輪廓框的RGB值和矩形的寬度),使用cv2.rectangle來定義方法以創(chuàng)建一個矩形。
讓我們來看看面部檢測的完整代碼:
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()眾多python培訓(xùn)視頻,盡在python學(xué)習(xí)網(wǎng),歡迎在線學(xué)習(xí)!
當(dāng)前題目:創(chuàng)新互聯(lián)Python教程:python怎么使用opencv
鏈接分享:http://m.fisionsoft.com.cn/article/dhcsojd.html


咨詢
建站咨詢
