膨脹
膨脹被用來增加圖像中邊緣的大小。首先,我們定義了奇數(5,5)的核矩陣大小。然后使用內核,我們對圖像執行膨脹。下面我們對 Canny 算子的輸出圖像進行了膨脹。
語法
kernel = np.ones((5,5),np.uint8) ## DEFINING KERNEL OF 5x5
imgDialation = cv2.dilate(imgCanny,kernel,iterations=1) ##DIALATION
腐蝕
侵蝕與膨脹正好相反。該算法用于減小圖像中邊緣的大小。首先,我們定義了奇數(5,5)的核矩陣大小。然后使用內核,我們對圖像執行腐蝕。下面我們對 Canny 算子的輸出圖像進行腐蝕處理。
kernel = np.ones((5,5),np.uint8) ## DEFINING KERNEL OF 5x5
imgDialation = cv2.erode(imgCanny,kernel,iterations=1) ##EROSION
現在,在同一個程序中使用上述基本函數處理 Monalisa 圖像。
繪制不同的形狀
我們可以使用 OpenCV 繪制不同的形狀,像矩形,圓形,線等。
長方形:
要在圖像上繪制一個矩形,我們使用 cv2.rectangle 函數。在函數中,我們將寬度、高度、 x、 y、 RGB 中的顏色、深度作為參數傳遞。
語法
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 函數。我們傳遞 x,y,半徑大小,RGB 顏色,深度作為參數。
語法
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 函數傳遞起始點(x1,y1)、終點(x2,y2)、 RGB 格式的顏色、深度作為參數。
語法
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 中,我們有一個函數 cv2.puttext,用于在特定位置在圖像上寫入文本。它以圖像、文本、 x、 y、顏色、字體、字號、粗細作為輸入參數。
語法
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)
檢測和裁剪人臉
人臉檢測在人臉識別系統中非常有用。在 OpenCV 中,我們有許多預先訓練的 haar 級聯分類器可用于不同的任務。以下網址可以查看 OpenCV GitHub 上的分類器列表:https://github.com/opencv/opencv/tree/master/data/haarca
scades。
我們使用 haarcascade_frontalface_default.xml 分類器來檢測圖像中的人臉。它將返回圖像的四個坐標(w,h,x,y)。使用這些坐標,我們要在臉上畫一個矩形,然后使用相同的坐標,繼續裁剪人臉。最后使用 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++
+關注
關注
22文章
2104瀏覽量
73504 -
計算機視覺
+關注
關注
8文章
1696瀏覽量
45930 -
OpenCV
+關注
關注
30文章
628瀏覽量
41274
發布評論請先 登錄
相關推薦
評論