最近刷題有點累想做個小東西玩下(手動狗頭)借用的是opencv的分類器別罵我,我只是自己玩
python就不配置了這東西應該都有
| 目錄 opencv的配置: 讀取圖片 灰度轉換 尺寸修改 繪制矩形 人臉檢測 檢測多個 視頻檢測 資訊錄入 資料訓練 |
opencv的配置:
- 按win+R 輸入cmd


- 在這個里面輸入pip install opencv-python
- 點擊opencv官網

- 選擇release

- 下載就好了
讀取圖片
#匯入cv模塊
import cv2 as cv
#讀取圖片
img=cv.imread('face1.jpg')
#顯示圖片
cv.imshow('read_img',img)
#等待
cv.waitKey(0)
#釋放記憶體
cv.destroyAllWindows()

這個face1.jpg是我自己給檔案取的名字你們也可以自己命名
灰度轉換
#匯入cv模塊
import cv2 as cv
#讀取圖片
img=cv.imread('face2.jpg')
#灰度轉換
gray_img=cv.cvtColor(img,cv.COLOR_BGR2GRAY)
#顯示灰度
cv.imshow('gray',gray_img)
#保存灰度
cv.imwrite('gray_face2.jpg',gray_img)
#顯示圖片
cv.imshow('read_img',img)
#等待
cv.waitKey(0)
#釋放記憶體
cv.destroyAllWindows()
效果實作:

尺寸修改
#匯入cv模塊
import cv2 as cv
#讀取圖片
img=cv.imread('face2.jpg')
#修改尺寸
resize_img=cv.resize(img,dsize=(200,200))
#顯示原圖
cv.imshow('img',img)
#顯示修改后的圖片
cv.imshow('resize_img',resize_img)
#列印原圖大小
print('未修改',img.shape)
#列印修改后的原圖大小
print('修改后',resize_img.shape)
#等待
cv.waitKey(0)
#釋放記憶體
cv.destroyAllWindows()
效果實作

改下等待將等待改成接收到輸入空格退出
#匯入cv模塊
import cv2 as cv
#讀取圖片
img=cv.imread('face2.jpg')
#修改尺寸
resize_img=cv.resize(img,dsize=(200,200))
#顯示原圖
cv.imshow('cat',img)
#顯示修改后的圖片
cv.imshow('resize_cat',resize_img)
#列印原圖大小
print('未修改',img.shape)
#列印修改后的原圖大小
print('修改后',resize_img.shape)
#等待
while True:
if ord(' ')==cv.waitKey(0):
break
#釋放記憶體
cv.destroyAllWindows()
繪制矩形
#匯入cv模塊
import cv2 as cv
#讀取圖片
img=cv.imread('face2.jpg')
#坐標
x,y,w,h=100,100,100,100
#繪制矩形
cv.rectangle(img,(x,y,x+w,y+h),color=(0,0,255),thickness=1)#圖片 起始點 長寬 顏色 寬度
#繪制圓形
cv.circle(img,center=(x+w,y+h),radius=100,color=(255,0,0),thickness=5)
#圖片 圓心 半徑 顏色(blue,green,red) 寬度
#顯示
cv.imshow('cat',img)
#等待
while True:
if ord(' ')==cv.waitKey(0):
break
#釋放記憶體
cv.destroyAllWindows()
效果實作:

人臉檢測
face_dete.detectMultiScale()
這個函式的引數是 影像 縮放倍數 檢測次數 默認 人臉的最大最小的像素點
#匯入cv模塊
import cv2 as cv
#檢測函式
def face_dete_demo():
gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)
face_dete=cv.CascadeClassifier("D:\opencv\opencv\sources\data\haarcascades\haarcascade_frontalface_alt2.xml")
face=face_dete.detectMultiScale(gray,1.01,5,0,(100,100),(300,300))#限制人臉的大小在100*100的像素點到300*300像素點
for x,y,w,h in face:
cv.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=2)
cv.imshow('result',img)
#讀取圖片
img=cv.imread('face2.jpg')
face_dete_demo()
#等待
while True:
if ord(' ')==cv.waitKey(0):
break
#釋放記憶體
cv.destroyAllWindows()
效果如下:

檢測多個
換了兩個分類器都做不到100%
😭
#匯入cv模塊
import cv2 as cv
#檢測函式
def face_dete_demo():
gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)
face_dete=cv.CascadeClassifier("D:\opencv\opencv\sources\data\haarcascades\haarcascade_frontalface_default.xml")
face=face_dete.detectMultiScale(gray,1.10,5,0,(10,10),(50,50))
for x,y,w,h in face:
cv.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=2)
cv.imshow('result',img)
#讀取圖片
img=cv.imread('face3.jpg')
face_dete_demo()
#等待
while True:
if ord(' ')==cv.waitKey(0):
break
#釋放記憶體
cv.destroyAllWindows()
效果如下:
視頻檢測
#匯入cv模塊
import cv2 as cv
#檢測函式
def face_dete_demo(img):
gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)
face_dete=cv.CascadeClassifier("D:\opencv\opencv\sources\data\haarcascades\haarcascade_frontalface_alt2.xml")
face=face_dete.detectMultiScale(gray,1.01,5,0,(100,100),(300,300))
for x,y,w,h in face:
cv.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=2)
cv.imshow('result',img)
#讀取攝像頭
cap=cv.VideoCapture(0)#默認攝像頭
#等待
while True:
flag,frame=cap.read()#讀取攝像頭
if not flag:
break
face_dete_demo(frame)
if ord(' ')==cv.waitKey(0):
break
#釋放記憶體
cap.release()
效果:這波為了代碼獻身(手動狗頭)

識別視屏也可代碼如下
#匯入cv模塊
import cv2 as cv
#檢測函式
def face_dete_demo(img):
gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)
face_dete=cv.CascadeClassifier("D:\opencv\opencv\sources\data\haarcascades\haarcascade_frontalface_alt2.xml")
face=face_dete.detectMultiScale(gray,1.01,5,0,(100,100),(300,300))
for x,y,w,h in face:
cv.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=2)
cv.imshow('result',img)
#讀取攝像頭
cap=cv.VideoCapture('vedio1.mp4')#我在這個檔案夾里放了一個視屏
#等待
while True:
flag,frame=cap.read()#讀取攝像頭
if not flag:
break
face_dete_demo(frame)
if ord(' ')==cv.waitKey(1)://這個要改成1跳動如果是0的話就成無限等待了
break
#釋放記憶體
cap.release()
資訊錄入
#倒入模塊
import cv2
#攝像頭
cap=cv2.VideoCapture(0)
flag=1
num=1
while(cap.isOpened()):#檢測攝像頭是否開啟
ret_flag,Vshow=cap.read()#得到每幀影像
cv2.imshow("Capture_Test",Vshow)#顯示影像
k=cv2.waitKey(1) & 0xFF#壓下按鍵判斷
if k==ord(' '):
cv2.imwrite("D:/vedio/"+str(num)+".yushiqi"+".jpg",Vshow)#把這個影像壓倒這個路徑里面
print("success to save"+str(num)+"jpg")#保存成功
print("------------")
num+=1
elif k==ord('q'):
break;
#釋放攝像頭
cap.release()
#釋放記憶體
cv2.destroyAllWindows()
效果實作(我把攝像頭遮住了)

資料訓練
等等啊我遇到個問題讓我再想想
這個東西我慢慢做吧主要還有期末考試就很煩
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/377282.html
標籤:其他
下一篇:卡爾曼濾波器

