สารบัญ:

การจดจำใบหน้า Opencv: 4 ขั้นตอน
การจดจำใบหน้า Opencv: 4 ขั้นตอน

วีดีโอ: การจดจำใบหน้า Opencv: 4 ขั้นตอน

วีดีโอ: การจดจำใบหน้า Opencv: 4 ขั้นตอน
วีดีโอ: EP.18 What’s New - เขียนโปรแกรมตรวจจับใบหน้าด้วย OpenCV !! 2024, พฤศจิกายน
Anonim
การจดจำใบหน้า Opencv
การจดจำใบหน้า Opencv

การจดจำใบหน้าเป็นเรื่องธรรมดาในทุกวันนี้ ในแอปพลิเคชั่นมากมาย เช่น สมาร์ทโฟน อุปกรณ์อิเล็กทรอนิกส์มากมาย เทคโนโลยีประเภทนี้เกี่ยวข้องกับอัลกอริธึมและเครื่องมือมากมาย ฯลฯ ซึ่งใช้แพลตฟอร์ม SOC แบบฝังตัว เช่น Raspberry Pi และคอมพิวเตอร์วิทัศน์โอเพ่นซอร์ส ไลบรารีเช่น OpenCV คุณสามารถเพิ่มการจดจำใบหน้าลงในแอปพลิเคชันของคุณเอง เช่น ระบบรักษาความปลอดภัยได้แล้ว

ในโครงการนี้ ฉันจะบอกคุณถึงวิธีสร้างการจดจำใบหน้าโดยใช้ Raspberry Pi และเราใช้ Arduino+Lcd เพื่อแสดงชื่อของบุคคลนั้น..

ขั้นตอนที่ 1: สิ่งที่คุณต้องการ

สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ

1.ราสเบอร์รี่ปี่

2. ARDUINO UNO / นาโน

3.16x2 lCD DISPLAY

4. RASPI-CAMERA / WEBcam (ฉันชอบเว็บแคมเพื่อผลลัพธ์ที่ดีกว่า)

ขั้นตอนที่ 2: Opencv-Intro และการติดตั้ง

Opencv-Intro และการติดตั้ง
Opencv-Intro และการติดตั้ง

OpenCV (ไลบรารีวิสัยทัศน์คอมพิวเตอร์โอเพนซอร์ส) เป็นไลบรารีที่มีประโยชน์มาก โดยมีคุณสมบัติที่มีประโยชน์มากมาย เช่น การจดจำข้อความ การจดจำใบหน้า การตรวจจับวัตถุ การสร้างแผนที่เชิงลึก และการเรียนรู้ของเครื่อง

บทความนี้จะแสดงวิธีการติดตั้ง Opencv และไลบรารีอื่นๆ บน Raspberry Pi ซึ่งจะมีประโยชน์เมื่อทำการตรวจจับวัตถุและโครงการอื่นๆ จากที่นั่น เราจะเรียนรู้วิธีดำเนินการกับรูปภาพและวิดีโอโดยดำเนินการโครงการจดจำวัตถุและแมชชีนเลิร์นนิง โดยเฉพาะอย่างยิ่ง เราจะเขียนโค้ดง่ายๆ เพื่อตรวจจับใบหน้าในรูปภาพ

OpenCV คืออะไร?

OpenCV คือวิสัยทัศน์คอมพิวเตอร์โอเพ่นซอร์สและไลบรารีซอฟต์แวร์การเรียนรู้ของเครื่อง OpenCV เผยแพร่ภายใต้ใบอนุญาต BSD ทำให้ใช้งานได้ฟรีทั้งด้านวิชาการและเชิงพาณิชย์ มีอินเตอร์เฟส C++, Python และ Java และรองรับ Windows, Linux, Mac OS, iOS และ Android OpenCV ได้รับการออกแบบมาเพื่อประสิทธิภาพในการคำนวณและเน้นการใช้งานแบบเรียลไทม์

จะติดตั้ง OpenCV บน Raspberry Pi ได้อย่างไร

ในการติดตั้ง OpenCV เราจำเป็นต้องติดตั้ง Python เนื่องจาก Raspberry Pis ถูกโหลดไว้ล่วงหน้าด้วย Python เราจึงสามารถติดตั้ง OpenCV ได้โดยตรง

พิมพ์คำสั่งด้านล่างเพื่อให้แน่ใจว่า Raspberry Pi ของคุณทันสมัยและอัปเดตแพ็คเกจที่ติดตั้งบน Raspberry Pi เป็นเวอร์ชันล่าสุด

sudo apt-get updatessudo apt-get upgrade

พิมพ์คำสั่งต่อไปนี้ในเทอร์มินัลเพื่อติดตั้งแพ็คเกจที่จำเป็นสำหรับ OpenCV บน Raspberry Pi ของคุณ

sudo apt ติดตั้ง libatlas3-base libsz2 libharfbuzz0b libtiff5 libjasper1 libilmbase12 libopenexr22 libilmbase12 libgstreamer1.0-0 libavcodec57 libavformat57 libavutil55 libswscale4 libqtgui4 libqtcore

พิมพ์คำสั่งต่อไปนี้เพื่อติดตั้ง OpenCV 3 สำหรับ Python 3 บน Raspberry Pi ของคุณ pip3 บอกเราว่า OpenCV จะได้รับการติดตั้งสำหรับ Python 3

sudo pip3 ติดตั้ง opencv-contrib-python libwebp6

ตอนนี้ควรติดตั้ง OpenCV

(หากมีข้อผิดพลาดเกิดขึ้น: ยังสามารถทำได้โดยไปที่ลิงค์ด้านล่าง

https://www.instructables.com/id/Raspberry-Pi-Hand…)

ตอนนี้อย่ารีบเราต้องตรวจสอบว่าติดตั้งถูกต้องหรือไม่

ทดสอบ opencv ของคุณโดย:

1. ไปที่เทอร์มินัลของคุณและพิมพ์ "python"

2.จากนั้นพิมพ์ "import cv2"

3.จากนั้นพิมพ์ " cv2._version_"

จากนั้นติดตั้งไลบรารีเหล่านี้

pip3 ติดตั้ง python-numpy

pip3 ติดตั้ง python-matplotlib

รหัสทดสอบเพื่อตรวจจับใบหน้าในรูปภาพ:

นำเข้า cv2

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml");

รูปภาพ = cv2.imread('ชื่อไฟล์ของคุณ') #example cv2.imread('home/pi/Desktop/filename.jpg')

คุณจะได้ผลลัพธ์เหมือนกล่องสี่เหลี่ยมถูกสร้างขึ้นบนใบหน้าของคนที่อยู่ในภาพ

ขั้นตอนที่ 3: การตรวจจับและจดจำใบหน้าในวิดีโอแบบเรียลไทม์

นำเข้า cv2

นำเข้า numpy เป็น np

นำเข้าระบบปฏิบัติการ

นำเข้าซีเรียล

ser = serial. Serial('/dev/ttyACM0', 9600, timeout=1) # /dev/ttyACM0 อาจเปลี่ยนแปลงในกรณีของคุณ ขึ้นอยู่กับ Arduino

cascadePath = "haarcascade_frontalface_default.xml"

faceCascade = cv2. CascadeClassifier (cascadePath)

ตัวจำแนกลายมือ=cv2.face.createLBPHFaceRecognizer()

ภาพ=

ป้ายกำกับ=

สำหรับชื่อไฟล์ใน os.listdir ('ชุดข้อมูล'):

im=cv2.imread('ชุดข้อมูล/'+ชื่อไฟล์, 0)

images.append (im)

labels.append(int(filename.split('.')[0][0]))

#พิมพ์ชื่อไฟล์

names_file=open('labels.txt')

ชื่อ=names_file.read().split('\n')

Recognizer.train (ภาพ np.array (ป้ายกำกับ))

พิมพ์ ' อบรมเสร็จแล้ว… '

แบบอักษร = cv2. FONT_

HERSHEY_SIMPLEXcap=cv2. VideoCapture(1) # อุปกรณ์วิดีโอของคุณ

LastRes=''count=0

ในขณะที่(1):

_, frame=cap.read()

สีเทา=cv2.cvtColor(เฟรม cv2. COLOR_BGR2GRAY)

faces = faceCascade.detectMultiScale (สีเทา, 1.3, 5)

นับ+=1

สำหรับ (x, y, w, h) ในหน้า:

cv2.rectangle(เฟรม, (x, y), (x+w, y+h), (255, 0, 0), 2)

ถ้านับ>20: res=names[recognizer.predict(gray[y:y+h, x:x+w])-1]

ถ้า res!=lastRes:

LastRes=res

พิมพ์ล่าสุดRes

ser.write (lastRes)

นับ=0

หยุดพัก

cv2.imshow('เฟรม', เฟรม)

k = 0xFF & cv2.waitKey(10)

ถ้า k == 27:

หยุดพัก

หมวกปล่อย ()

ser.close()

cv2.destroyAllWindows()

ขั้นตอนที่ 4: เรียกใช้โค้ด

การรันโค้ด
การรันโค้ด

1. ดาวน์โหลดไฟล์ที่แนบมาในขั้นตอนก่อนหน้า

2. คัดลอกภาพถ่ายสีเทาของคุณ (6 ภาพ/ ตัวอย่าง…..) ไปยังโฟลเดอร์ชุดข้อมูลของคุณ

1. Tom Cruise 1_1, 1_2, 1_3, 1_4, 1_5, 1_6 (หมายเลขรูปภาพชุดข้อมูลสำหรับโฟลเดอร์ชุดข้อมูลที่เปิดเพิ่มเติม)

2. แบรด พิตต์-2_1, 2_2, 2_3, 2_4, 2_5, 2_6

3. ลีโอ-3_1, 3_2, 3_3, 3_4, 3_5, 3_6

4. Ironman4_1, 4_2, 4_3, 4_4, 4_5, 4_6

เช่นเดียวกับด้านบนคุณสามารถเพิ่มป้ายกำกับสำหรับบุคคลที่เกี่ยวข้อง

ดังนั้น ถ้า pi ตรวจพบใบหน้าใด ๆ ใน 1_1, 1_2, 1_3, 1_4, 1_5, 1_6 แสดงว่าเป็น Tom Cruise ดังนั้นโปรดระมัดระวังในการอัปโหลดรูปภาพ…….

จากนั้นเชื่อมต่อ Arduino ของคุณกับ Raspberry Pi และทำการเปลี่ยนแปลงใน main.py codeser = serial. Serial('/dev/ttyACM0', 9600, timeout=1) 3. ใส่ไฟล์ที่ดาวน์โหลดทั้งหมด (main.py, โฟลเดอร์ชุดข้อมูล, haarcascade_frontalface_default.xml ในโฟลเดอร์เดียว)

3. ตอนนี้เปิด Raspi-terminal ให้รันโค้ดของคุณโดย "sudo python main.py"

แนะนำ: