膨脹
膨脹被用來增加圖像中邊緣的大小。首先,我們定義了奇數(shù)(5,5)的核矩陣大小。然后使用內(nèi)核,我們對(duì)圖像執(zhí)行膨脹。下面我們對(duì) Canny 算子的輸出圖像進(jìn)行了膨脹。
語法
kernel = np.ones((5,5),np.uint8) ## DEFINING KERNEL OF 5x5
imgDialation = cv2.dilate(imgCanny,kernel,iterations=1) ##DIALATION
腐蝕
侵蝕與膨脹正好相反。該算法用于減小圖像中邊緣的大小。首先,我們定義了奇數(shù)(5,5)的核矩陣大小。然后使用內(nèi)核,我們對(duì)圖像執(zhí)行腐蝕。下面我們對(duì) Canny 算子的輸出圖像進(jìn)行腐蝕處理。
kernel = np.ones((5,5),np.uint8) ## DEFINING KERNEL OF 5x5
imgDialation = cv2.erode(imgCanny,kernel,iterations=1) ##EROSION
現(xiàn)在,在同一個(gè)程序中使用上述基本函數(shù)處理 Monalisa 圖像。
繪制不同的形狀
我們可以使用 OpenCV 繪制不同的形狀,像矩形,圓形,線等。
長(zhǎng)方形:
要在圖像上繪制一個(gè)矩形,我們使用 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)
圓形:
為了繪制一個(gè)圓形,我們使用 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ù)傳遞起始點(diǎn)(x1,y1)、終點(diǎn)(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 中,我們有一個(gè)函數(shù) cv2.puttext,用于在特定位置在圖像上寫入文本。它以圖像、文本、 x、 y、顏色、字體、字號(hào)、粗細(xì)作為輸入?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)
檢測(cè)和裁剪人臉
人臉檢測(cè)在人臉識(shí)別系統(tǒng)中非常有用。在 OpenCV 中,我們有許多預(yù)先訓(xùn)練的 haar 級(jí)聯(lián)分類器可用于不同的任務(wù)。以下網(wǎng)址可以查看 OpenCV GitHub 上的分類器列表:https://github.com/opencv/opencv/tree/master/data/haarca
scades。
我們使用 haarcascade_frontalface_default.xml 分類器來檢測(cè)圖像中的人臉。它將返回圖像的四個(gè)坐標(biāo)(w,h,x,y)。使用這些坐標(biāo),我們要在臉上畫一個(gè)矩形,然后使用相同的坐標(biāo),繼續(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()
-
C++
+關(guān)注
關(guān)注
22文章
2108瀏覽量
73618 -
計(jì)算機(jī)視覺
+關(guān)注
關(guān)注
8文章
1698瀏覽量
45972 -
OpenCV
+關(guān)注
關(guān)注
31文章
634瀏覽量
41337
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論