日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

csi python 摄像头 树莓派_树莓派之摄像头和人脸识别

發(fā)布時間:2023/12/10 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 csi python 摄像头 树莓派_树莓派之摄像头和人脸识别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

安裝好Python與樹莓派外置硬件GPIO庫文件

sudo apt-get install python-rpi.gpio

在python中使用GPIO示例:

import RPi.GPIO as GPIO

#### gpio init

GPIO.setmode(GPIO.BCM)

GPIO.setup(7, GPIO.OUT) #LED2

GPIO.setup(8, GPIO.OUT) #LED1

GPIO.output(7, GPIO.LOW) #LED2 ON

GPIO.output(8, GPIO.HIGH)#LED1 OFF

fswebcam,這是一款小型攝像頭程序,可以直接通過Raspbian的倉庫來安裝,

sudo apt-get install fswebcam

fswebcam --help

以下運行的示例:

pi@raspberrypi:~ $ fswebcam --no-banner --device /dev/video0 -r 1600x1200 b.jpg

--- Opening /dev/video0...

Trying source module v4l2...

/dev/video0 opened.

No input was specified, using the first.

--- Capturing frame...

Captured frame in 0.00 seconds.

--- Processing captured image...

Disabling banner.

Writing JPEG image to 'b.jpg'.

使用opencv自帶的VideoCapture()函數(shù)定義攝像頭對象,其參數(shù)0表示第一個攝像頭,保存一張照片:

#-*- coding=utf-8 -*-

import cv2

import numpy as np

import time

cap = cv2.VideoCapture(1)

ret,frame = cap.read()

#cv2.imshow('frame',frame)#一個窗口用以顯示原視頻

filename = "/home/pi/" + time.strftime('%Y%m%d-%H%M%S') + ".jpg"

cv2.imwrite(filename, frame)

cap.release()

cv2.destroyAllWindows()

以下實例通過USB攝像頭拍攝一張圖片,并通過載入特征文件對圖片進(jìn)行人臉識別,取出對應(yīng)的人臉部分并保存為小圖。

特征文件可以通過在命令行中用find命令來查找:

sudo find / -iname "*haarcascades*" > /home/pi/opencv_find.txt

完整的代碼如下:

#-*- coding=utf-8 -*-

import os

from PIL import Image, ImageDraw

import cv2.cv as cv

import cv2

#OPCV_PATH = "/opt/Wolfram/WolframEngine/11.2/SystemFiles"

def detect_object(image):

'''檢測圖片,獲取人臉在圖片中的坐標(biāo)'''

grayscale = cv.CreateImage((image.width, image.height), 8, 1)

cv.CvtColor(image, grayscale, cv.CV_BGR2GRAY)

#cascade = cv.Load(OPCV_PATH+"/Data/haarcascades/frontalface.xml")

cascade = cv.Load("/opt/Wolfram/WolframEngine/11.2/SystemFiles/Data/Haarcascades/frontalface.xml")

rect = cv.HaarDetectObjects(grayscale, cascade, cv.CreateMemStorage(), 1.1, 2,

cv.CV_HAAR_DO_CANNY_PRUNING, (20,20))

result = []

for r in rect:

result.append((r[0][0], r[0][1], r[0][0]+r[0][2], r[0][1]+r[0][3]))

return result

def process(infile):

'''在原圖上框出頭像并且截取每個頭像到單獨文件夾'''

image = cv.LoadImage(infile);

if image:

faces = detect_object(image)

im = Image.open(infile)

path = os.path.abspath(infile)

save_path = os.path.splitext(path)[0]+"_face"

#save_path = "/home/pi" + "_face"

try:

os.mkdir(save_path)

except:

pass

if faces:

draw = ImageDraw.Draw(im)

count = 0

for f in faces:

count += 1

draw.rectangle(f, outline=(255, 0, 0))

a = im.crop(f)

file_name = os.path.join(save_path,str(count)+".jpg")

# print file_name

a.save(file_name)

drow_save_path = os.path.join(save_path,"out.jpg")

im.save(drow_save_path, "JPEG", quality=80)

else:

print "Error: cannot detect faces on %s" % infile

if __name__ == "__main__":

os.system("fswebcam --no-banner --device /dev/video0 -r 1600x1200 b.jpg")

process("b.jpg")

拍到的照片如下:

通過以上程序的運行,框出了臉?biāo)趨^(qū)域,

并將這些部分區(qū)域截取出來,存成小文件。

總結(jié)

以上是生活随笔為你收集整理的csi python 摄像头 树莓派_树莓派之摄像头和人脸识别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。