整個過程很簡單,因為不是自己訓練人臉特徵模型,而是使用的官方的haar分類器(但是這樣的話實測識別不是很準確)。
版本資訊:
python: 3.7
cv2: 4.1.0
1、呼叫電腦攝像頭,並不斷讀取frame
2、對每乙個讀取到的frame,進行灰度處理
3、呼叫官方給出的人臉分類器檔案haarcascade_frontalface_default.xml
。(安裝了opencv庫以後可以使用everything工具搜尋這個檔案所在位置。)
4、設定引數並進行分類
5、使用cv2的矩形繪製工具繪製人臉框
6、顯示繪製好框圖的frame
7、設定捕獲到輸入q就退出
8、結束請理操作
雖然列出了這麼多點操作步驟,但實際上**行數很少,只有十來行。
import cv2
cap = cv2.videocapture(0)
while
(true):
# capture frame-by-frame
ret, frame = cap.read(
)# our operations on the frame come here
gray = cv2.cvtcolor(frame, cv2.color_bgr2gray)
xmlfile = r'c:\programdata\anaconda3\lib\site-packages\cv2\data\haarcascade_frontalface_default.xml'
face_cascade = cv2.cascadeclassifier(xmlfile)
faces = face_cascade.detectmultiscale(
gray,
scalefactor=
1.15
, minneighbors=5,
minsize=(5
,5),
)print
("發現個目標!"
.format
(len
(faces)))
for(x, y, w, h)
in faces:
cv2.rectangle(frame,
(x, y)
,(x + w, y + w),(
0,255,0)
,2) cv2.imshow(
"frame"
, frame)
# display the resulting frame
if cv2.waitkey(1)
&0xff
==ord
('q'):
break
# when everything done, release the capture
cap.release(
)cv2.destroyallwindows(
)
android呼叫camera時發生的攝像頭p
通過調整相機的引數 parameters.setpreviewsize來得到解決。對於攝像頭來說,其得到的 是不變的。但是preview預覽看到的卻是變形的。攝像頭得到的一邊都是方形的。我們可以將preview設定為寬和高都是相等的來顯示攝像頭得到的影象,這種影象沒有經過形變,或者形變是寬和高同等變...
Python opencv 呼叫度目攝像頭
一直沒弄懂埠號後的引數1是啥意思,反正網上都是11,我以為是碼流試了一下成功了,但是碼流設定為2時,卻調不通.url rtsp rtsp 賬戶名 密碼 ip位址 埠號 1 未知 cap cv2.videocapture url ret flag,img camera cap.read print r...
python opencv 安裝整理
這兩天比較有空,在公司內想學習一下opencv,又不想安裝vc 所以就那個python看opencv。安裝環境本來很簡單 但是我python是64的 估計也很多 而opencv的安裝要有乙個numpy庫 這個在官網上只有32位的 所以,事情變得複雜起來。網上找了一下,只道有提供64位版的numpy庫...