0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

OpenCV常用的 7 個示例(Python版)3

jf_78858299 ? 來源:小白玩轉(zhuǎn)Python ? 作者:二旺 ? 2023-02-07 16:23 ? 次閱讀

膨脹

膨脹被用來增加圖像中邊緣的大小。首先,我們定義了奇數(shù)(5,5)的核矩陣大小。然后使用內(nèi)核,我們對圖像執(zhí)行膨脹。下面我們對 Canny 算子的輸出圖像進行了膨脹。

語法

kernel = np.ones((5,5),np.uint8) ## DEFINING KERNEL OF 5x5
imgDialation = cv2.dilate(imgCanny,kernel,iterations=1) ##DIALATION

腐蝕

侵蝕與膨脹正好相反。該算法用于減小圖像中邊緣的大小。首先,我們定義了奇數(shù)(5,5)的核矩陣大小。然后使用內(nèi)核,我們對圖像執(zhí)行腐蝕。下面我們對 Canny 算子的輸出圖像進行腐蝕處理。

kernel = np.ones((5,5),np.uint8) ## DEFINING KERNEL OF 5x5
imgDialation = cv2.erode(imgCanny,kernel,iterations=1) ##EROSION

現(xiàn)在,在同一個程序中使用上述基本函數(shù)處理 Monalisa 圖像。

繪制不同的形狀

我們可以使用 OpenCV 繪制不同的形狀,像矩形,圓形,線等。

長方形:

要在圖像上繪制一個矩形,我們使用 cv2.rectangle 函數(shù)。在函數(shù)中,我們將寬度、高度、 x、 y、 RGB 中的顏色、深度作為參數(shù)傳遞。

語法

cv2.rectangle(img,(w,h),(x,y),(R,G,B),THICKNESS)
w: width
h: height
x: distance from x axis
y: distance from y axis
R,G,B: color in RGB form (255,255,0)
THICKNESS: thickness of rectangel(integer)Example
cv2.rectangle(img,(100,300),(200,300),(255,0,255),2)

圓形:

為了繪制一個圓形,我們使用 cv2.circle 函數(shù)。我們傳遞 x,y,半徑大小,RGB 顏色,深度作為參數(shù)。

語法

cv2.circle(img,(x,y),radius,(R,G,B),THICKNESS)
x: distance from x axis
y: distance from y axis
radius: size of radius(integer)
R,G,B: color in RGB form (255,255,0)
THICKNESS: thickness of rectangel(integer)Example
cv2.circle(img,(200,130),90,(255,255,0),2)

直線:

要繪制一條直線,我們使用 cv2.line 函數(shù)傳遞起始點(x1,y1)、終點(x2,y2)、 RGB 格式的顏色、深度作為參數(shù)。

語法

cv2.line(img,(x1,y1),(x2,y2),(R,G,B),THICKNESS)x1,y1: start point of line (integer)
x2,y2: end point of line (integer)
R,G,B: color in RGB form (255,255,0)
THICKNESS: thickness of rectangel(integer)Example
cv2.line(img,(110,260),(300,260),(0,255,0),3)

在圖像上寫文字

在 OpenCV 中,我們有一個函數(shù) cv2.puttext,用于在特定位置在圖像上寫入文本。它以圖像、文本、 x、 y、顏色、字體、字號、粗細作為輸入?yún)?shù)。

語法

cv2.putText(img,text,(x,y),FONT,FONT_SCALE,(R,G,B),THICKNESS)
img: image to put text on
text: text to put on image
X: text distance from X axis
Y: text distance from Y axis
FONT: Type of FONT (ALL FONT TYPES)
FONT_SCALE: Scale of Font(Integer)
R,G,B: color in RGB form (255,255,0)
THICKNESS: thickness of rectangel(integer)Example
cv2.putText(img,"HELLO",(120,250),cv2.FONT_HERSHEY_COMPLEX,1,(255,255,255),2)

檢測和裁剪人臉

人臉檢測在人臉識別系統(tǒng)中非常有用。在 OpenCV 中,我們有許多預先訓練的 haar 級聯(lián)分類器可用于不同的任務。以下網(wǎng)址可以查看 OpenCV GitHub 上的分類器列表:https://github.com/opencv/opencv/tree/master/data/haarca

scades。

我們使用 haarcascade_frontalface_default.xml 分類器來檢測圖像中的人臉。它將返回圖像的四個坐標(w,h,x,y)。使用這些坐標,我們要在臉上畫一個矩形,然后使用相同的坐標,繼續(xù)裁剪人臉。最后使用 imwrite,把裁剪后的圖像保存到目錄中。

import cv2
# Load the cascade
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')# Read the input image
img = cv2.imread('images/img0.jpg')# Convert into grayscale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# Detect faces
faces = face_cascade.detectMultiScale(gray, 1.3, 4)# Draw rectangle around the faces
for (x, y, w, h) in faces:
    cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
    # Cropping Face
    crop_face = img[y:y + h, x:x + w]
    #Saving Cropped Face
    cv2.imwrite(str(w) + str(h) + '_faces.jpg', crop_face)
cv2.imshow('img', img)
cv2.imshow("imgcropped",crop_face)
cv2.waitKey()

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C++
    C++
    +關注

    關注

    21

    文章

    2085

    瀏覽量

    73304
  • 計算機視覺
    +關注

    關注

    8

    文章

    1685

    瀏覽量

    45811
  • OpenCV
    +關注

    關注

    29

    文章

    622

    瀏覽量

    41091
收藏 人收藏

    評論

    相關推薦

    60重要的Python示例

    60重要的Python示例
    發(fā)表于 10-26 09:29 ?575次閱讀

    LabVIEW+Python+openCV

    的,動態(tài)鏈接庫也需要配置,還需要知道各個參數(shù)含義和類型,這里提供另外一種方法,那就是PythonopenCV工具包,絕對開源和免費,LabVIEW可以利用Python節(jié)點調(diào)用Python
    發(fā)表于 12-07 20:59

    播放視頻_OpenCV3版書本配套示例程序06

    OpenCV3編程入門》OpenCV3版書本配套示例程序06,使用VideoCapture類進行視頻讀取和播放。
    發(fā)表于 06-06 15:20 ?0次下載

    邊緣檢測綜合示例_OpenCV3版書本配套示例程序60

    OpenCV3編程入門》書本配套源代碼:邊緣檢測綜合示例,邊緣檢測綜合示例——Canny算子,Sobel算子,Laplace算子,Scharr濾波器合輯。
    發(fā)表于 06-06 15:25 ?0次下載

    仿射變換綜合示例_《OpenCV3編程入門》書本配套源代碼

    OpenCV3編程入門》書本配套源代碼:仿射變換綜合示例
    發(fā)表于 06-06 15:39 ?5次下載

    實現(xiàn)多種重映射綜合示例_《OpenCV3編程入門》書本配套源代碼

    OpenCV3編程入門》書本配套源代碼:實現(xiàn)多種重映射綜合示例
    發(fā)表于 06-06 15:39 ?4次下載

    漫水填充算法綜合示例_《OpenCV3編程入門》書本配套源代碼

    OpenCV3編程入門》書本配套源代碼:漫水填充算法綜合示例
    發(fā)表于 06-06 15:39 ?2次下載

    形態(tài)學圖像處理綜合示例_《OpenCV3編程入門》書本配套源代碼

    OpenCV3編程入門》書本配套源代碼:形態(tài)學圖像處理綜合示例
    發(fā)表于 06-06 15:52 ?8次下載

    圖像濾波綜合示例_《OpenCV3編程入門》書本配套源代碼

    OpenCV3編程入門》書本配套源代碼:圖像濾波綜合示例
    發(fā)表于 06-06 15:52 ?6次下載

    OpenCV3編程入門-源碼例程全集-resize函數(shù)用法示例

    OpenCV3編程入門-源碼例程全集-resize函數(shù)用法示例
    發(fā)表于 09-18 16:38 ?2次下載

    OpenCV3編程入門-源碼例程全集-sobel函數(shù)用法示例

    OpenCV3編程入門-源碼例程全集-sobel函數(shù)用法示例
    發(fā)表于 09-18 16:38 ?1次下載

    OpenCV3編程入門-源碼例程全集-pyrUp函數(shù)用法示例

    OpenCV3編程入門-源碼例程全集-pyrUp函數(shù)用法示例
    發(fā)表于 09-18 16:38 ?0次下載

    OpenCV常用7 示例Python版)1

    OpenCV是計算機視覺領域最流行的庫之一。它最初是用 C 和 C++ 編寫的。現(xiàn)在也可以在 Python 中使用。它最初是由英特爾開發(fā)的。該庫是一跨平臺的開源庫。免費使用。OpenCV
    的頭像 發(fā)表于 02-07 16:23 ?1068次閱讀

    OpenCV常用7 示例Python版)2

    OpenCV是計算機視覺領域最流行的庫之一。它最初是用 C 和 C++ 編寫的?,F(xiàn)在也可以在 Python 中使用。它最初是由英特爾開發(fā)的。該庫是一跨平臺的開源庫。免費使用。OpenCV
    的頭像 發(fā)表于 02-07 16:23 ?955次閱讀

    opencv-pythonopencv一樣嗎

    不一樣。OpenCV(Open Source Computer Vision Library)是一開源的計算機視覺和機器學習軟件庫,它提供了大量的圖像和視頻處理功能。OpenCV-Python
    的頭像 發(fā)表于 07-16 10:38 ?449次閱讀