您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關python中opencv的使用方法是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
OpenCV是一個旨在解決計算機視覺問題的Python庫。OpenCV最初由Intel在1999年開發,但是后來由Willow Garage資助。它支持很多編程語言,如C++,Python,Java等等。它也支持多種平臺,包括Windows,Linux和MacOS。
OpenCV Python只是一個與Python一起使用的原始C++庫的包裝類。通過使用它,所有OpenCV數組結構都能被轉化為NumPy數組或從NumPy數組轉化而來。這樣就可以輕松地將其與其他使用NumPy的庫集成。例如,SciPy和Matplotlib等庫。
OpenCV的基礎操作?
Opencv能完成以下從加載圖像到調整大小等基本操作:
使用OpenCV加載圖片
查看圖片形狀/分辨率
顯示圖片
調整圖像大小
1. 使用OpenCV加載圖片
Import cv2 # colored Image Img = cv2.imread ("Penguins.jpg",1) # Black and White (gray scale) Img_1 = cv2.imread ("Penguins.jpg",0)
如以上代碼所示,第一個要求是導入OpenCV模塊。
之后,我們可以用imread模塊讀取圖片。參數中的1代表這是一個彩色圖片。如果這個參數的值是0,就意味著這個將被導入的圖片是黑白圖片。這里的圖片名稱是“Penguins”。很簡單吧?
2. 查看圖片形狀/分辨率
我們可以使用shape子函數來輸出圖片的形狀。看看以下代碼:
Import cv2 # Black and White (gray scale) Img = cv2.imread ("Penguins.jpg",0) Print(img.shape)
對于圖片的形狀,我們指的是NumPy數組的形狀。執行代碼之后你將會看到這個矩陣由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導入圖片。我們需要一個輸出窗口來顯示這個圖片,對吧?
然后,我們等待用戶事件。waitKey使窗口保持靜態直到用戶按下一個鍵。傳入的參數是以毫秒為單位的時間。
最后,我們根據waitForKey的參數使用destroyAllWindows關閉窗口。
4. 調整圖像大小
類似地,調整圖像大小非常簡單。 這里有另一個代碼段:
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函數用于將圖像大小調整為所需的形狀。這里的參數是新調整大小后的圖像的形狀。
與之前的代碼相比,剩下的代碼非常簡單,對嗎?
我相信你們對企鵝很好奇,這是我們想要輸出的圖片!
這是另一個向resize函數傳遞參數的方法。看看下面的表示方法:
Resized_image = cv2.resize(img, int(img.shape[1]/2), int(img.shape[0]/2)))
這里,我們得到的新圖像大小是原始圖像的一半。
使用OpenCV進行人臉檢測
這看起來很復雜,但實際上很容易。 讓我帶你了解整個過程,然后你也會有同樣的感受。
第一步:想一想我們的先決條件。我們首先需要一個圖像。然后,我們需要創建一個級聯分類器,它最后會給我們提供面部特征。
第二步:這一步要使用到OpenCV讀取圖像和特征文件。所以這個時候,原始數據點是NumPy數組的形式。
我們要做的就是搜索面部 NumPy n維數組的行和列的值。這是具有面部矩形坐標的數組。
第三步:最后一步是使用矩形面框顯示圖像。
看看下面的圖片,這里我以圖片的形式總結了上述的三個步驟以便于閱讀:
非常直接明了,對吧?
首先,如之前所述,我們創建CascadeClassifier對象來提取面部特征。包含面部特征的XML文件路徑是此處的參數。
下一步是讀取一個包含面部的圖片,并且使用COLOR_BGR2GREY將其轉化為黑白圖片。接下來,我們搜索圖像的坐標。這是使用detectMultiScale來實現的。
你問什么坐標?它是面部矩形的坐標。scaleFactor被用來減小5%的形狀值,直到找到面部。因此,總的來說,值越小,準確度越高。
最后,這張臉被顯示到窗口。
給識別的人臉添加矩形面框
這個邏輯很簡單——就像使用for循環語句一樣簡單。看看下面的圖片:
我們通過傳遞參數(比如圖片對象,輪廓框的RGB值和矩形的寬度),使用cv2.rectangle來定義方法以創建一個矩形。
讓我們來看看面部檢測的完整代碼:
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中opencv的使用方法是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。