AI พร้อม Python - Computer Vision
การมองเห็นของคอมพิวเตอร์เกี่ยวข้องกับการสร้างแบบจำลองและการจำลองการมองเห็นของมนุษย์โดยใช้ซอฟต์แวร์คอมพิวเตอร์และฮาร์ดแวร์ ในบทนี้คุณจะได้เรียนรู้โดยละเอียดเกี่ยวกับเรื่องนี้
วิสัยทัศน์คอมพิวเตอร์
การมองเห็นด้วยคอมพิวเตอร์เป็นระเบียบวินัยที่ศึกษาวิธีสร้างใหม่ขัดจังหวะและทำความเข้าใจฉาก 3 มิติจากภาพ 2 มิติในแง่ของคุณสมบัติของโครงสร้างที่มีอยู่ในฉาก
ลำดับชั้นวิสัยทัศน์ของคอมพิวเตอร์
การมองเห็นคอมพิวเตอร์แบ่งออกเป็นสามประเภทพื้นฐานดังต่อไปนี้ -
Low-level vision - ประกอบด้วยภาพกระบวนการสำหรับการแยกคุณลักษณะ
Intermediate-level vision - รวมถึงการจดจำวัตถุและการตีความฉาก 3 มิติ
High-level vision - รวมถึงการอธิบายแนวความคิดของฉากเช่นกิจกรรมความตั้งใจและพฤติกรรม
Computer Vision Vs Image Processing
การประมวลผลภาพศึกษาภาพไปสู่การแปลงภาพ อินพุตและเอาต์พุตของการประมวลผลภาพมีทั้งภาพ
การมองเห็นด้วยคอมพิวเตอร์คือการสร้างคำอธิบายที่ชัดเจนและมีความหมายของวัตถุทางกายภาพจากภาพของมัน ผลลัพธ์ของการมองเห็นด้วยคอมพิวเตอร์คือคำอธิบายหรือการตีความโครงสร้างในฉาก 3 มิติ
การใช้งาน
Computer Vision ค้นหาแอปพลิเคชันในฟิลด์ต่อไปนี้ -
Robotics
การแปลกำหนดตำแหน่งหุ่นยนต์โดยอัตโนมัติ
Navigation
หลีกเลี่ยงอุปสรรค
การประกอบ (การเจาะรูการเชื่อมการทาสี)
การจัดการ (เช่นหุ่นยนต์บังคับ PUMA)
Human Robot Interaction (HRI): หุ่นยนต์อัจฉริยะเพื่อโต้ตอบและให้บริการผู้คน
Medicine
การจำแนกประเภทและการตรวจหา (เช่นการจำแนกรอยโรคหรือเซลล์และการตรวจหาเนื้องอก)
การแบ่งส่วน 2D / 3D
การสร้างอวัยวะใหม่ของมนุษย์ 3 มิติ (MRI หรืออัลตราซาวนด์)
การผ่าตัดด้วยหุ่นยนต์นำทางด้วยสายตา
Security
- ไบโอเมตริกซ์ (ม่านตาพิมพ์ลายนิ้วมือจดจำใบหน้า)
- การเฝ้าระวังตรวจจับกิจกรรมหรือพฤติกรรมที่น่าสงสัยบางอย่าง
Transportation
- ยานพาหนะที่เป็นอิสระ
- ความปลอดภัยเช่นการตรวจสอบความระมัดระวังของผู้ขับขี่
Industrial Automation Application
- การตรวจสอบอุตสาหกรรม (การตรวจจับข้อบกพร่อง)
- Assembly
- การอ่านฉลากบาร์โค้ดและแพ็คเกจ
- การจัดเรียงวัตถุ
- ความเข้าใจเอกสาร (เช่น OCR)
การติดตั้งแพ็คเกจที่เป็นประโยชน์
สำหรับ Computer vision ด้วย Python คุณสามารถใช้ไลบรารียอดนิยมที่เรียกว่า OpenCV(วิสัยทัศน์คอมพิวเตอร์โอเพ่นซอร์ส) เป็นไลบรารีของฟังก์ชันการเขียนโปรแกรมที่มุ่งเป้าไปที่การมองเห็นของคอมพิวเตอร์แบบเรียลไทม์เป็นหลัก มันเขียนด้วย C ++ และอินเทอร์เฟซหลักอยู่ใน C ++ คุณสามารถติดตั้งแพ็คเกจนี้ด้วยความช่วยเหลือของคำสั่งต่อไปนี้ -
pip install opencv_python-X.X-cp36-cp36m-winX.whl
ในที่นี้ X แสดงถึงเวอร์ชันของ Python ที่ติดตั้งบนเครื่องของคุณเช่นเดียวกับ win32 หรือ 64 บิตที่คุณมี
หากคุณกำลังใช้ไฟล์ anaconda จากนั้นใช้คำสั่งต่อไปนี้เพื่อติดตั้ง OpenCV -
conda install -c conda-forge opencv
การอ่านการเขียนและการแสดงภาพ
แอปพลิเคชัน CV ส่วนใหญ่จำเป็นต้องรับภาพเป็นอินพุตและสร้างภาพเป็นเอาต์พุต ในส่วนนี้คุณจะได้เรียนรู้วิธีการอ่านและเขียนไฟล์ภาพด้วยความช่วยเหลือของฟังก์ชันต่างๆที่ OpenCV มีให้
ฟังก์ชัน OpenCV สำหรับการอ่านการแสดงการเขียนไฟล์ภาพ
OpenCV มีฟังก์ชันต่อไปนี้สำหรับวัตถุประสงค์นี้ -
imread() function- นี่คือฟังก์ชันสำหรับอ่านรูปภาพ OpenCV imread () รองรับรูปแบบภาพต่างๆเช่น PNG, JPEG, JPG, TIFF เป็นต้น
imshow() function- เป็นฟังก์ชันสำหรับแสดงภาพในหน้าต่าง หน้าต่างจะพอดีกับขนาดภาพโดยอัตโนมัติ OpenCV imshow () รองรับรูปแบบภาพต่างๆเช่น PNG, JPEG, JPG, TIFF เป็นต้น
imwrite() function- นี่คือฟังก์ชั่นสำหรับเขียนภาพ OpenCV imwrite () รองรับรูปแบบภาพต่างๆเช่น PNG, JPEG, JPG, TIFF เป็นต้น
ตัวอย่าง
ตัวอย่างนี้แสดงโค้ด Python สำหรับการอ่านรูปภาพในรูปแบบเดียวโดยแสดงในหน้าต่างและเขียนรูปภาพเดียวกันในรูปแบบอื่น พิจารณาขั้นตอนที่แสดงด้านล่าง -
นำเข้าแพ็คเกจ OpenCV ตามที่แสดง -
import cv2
ตอนนี้สำหรับการอ่านภาพใดภาพหนึ่งให้ใช้ฟังก์ชัน imread () -
image = cv2.imread('image_flower.jpg')
สำหรับการแสดงภาพให้ใช้ไฟล์ imshow()ฟังก์ชัน ชื่อของหน้าต่างที่คุณสามารถเห็นภาพได้คือimage_flower.
cv2.imshow('image_flower',image)
cv2.destroyAllwindows()
ตอนนี้เราสามารถเขียนภาพเดียวกันในรูปแบบอื่น ๆ พูด. png โดยใช้ฟังก์ชัน imwrite () -
cv2.imwrite('image_flower.png',image)
ผลลัพธ์ที่เป็นจริงหมายความว่าภาพถูกเขียนเป็นไฟล์. png ได้สำเร็จในโฟลเดอร์เดียวกัน
True
หมายเหตุ - ฟังก์ชัน destroyallWindows () เพียงแค่ทำลายหน้าต่างทั้งหมดที่เราสร้างขึ้น
การแปลงพื้นที่สี
ใน OpenCV ภาพจะไม่ถูกจัดเก็บโดยใช้สี RGB แบบเดิม แต่จะถูกจัดเก็บในลำดับย้อนกลับเช่นในลำดับ BGR ดังนั้นรหัสสีเริ่มต้นขณะอ่านภาพคือ BGR cvtColor() ฟังก์ชันการแปลงสีในการแปลงภาพจากรหัสสีหนึ่งไปเป็นรหัสสีอื่น ๆ
ตัวอย่าง
ลองพิจารณาตัวอย่างนี้เพื่อแปลงภาพจาก BGR เป็นโทนสีเทา
นำเข้าไฟล์ OpenCV แพคเกจตามที่แสดง -
import cv2
ตอนนี้สำหรับการอ่านภาพใดภาพหนึ่งให้ใช้ฟังก์ชัน imread () -
image = cv2.imread('image_flower.jpg')
ทีนี้ถ้าเราเห็นภาพนี้โดยใช้ไฟล์ imshow() จากนั้นเราจะเห็นว่าภาพนี้อยู่ใน BGR
cv2.imshow('BGR_Penguins',image)
ตอนนี้ใช้ cvtColor() เพื่อแปลงรูปภาพนี้เป็นโทนสีเทา
image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
cv2.imshow('gray_penguins',image)
การตรวจจับขอบ
มนุษย์หลังจากเห็นภาพร่างคร่าวๆแล้วสามารถจดจำวัตถุหลายประเภทและท่าทางของพวกมันได้อย่างง่ายดาย นั่นคือเหตุผลที่ขอบมีบทบาทสำคัญในชีวิตของมนุษย์เช่นเดียวกับการประยุกต์ใช้การมองเห็นด้วยคอมพิวเตอร์ OpenCV มีฟังก์ชันที่เรียกว่าง่ายและมีประโยชน์Canny()สำหรับตรวจจับขอบ
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงการระบุขอบที่ชัดเจน
นำเข้าแพ็กเกจ OpenCV ดังภาพ -
import cv2
import numpy as np
ตอนนี้สำหรับการอ่านภาพใดภาพหนึ่งให้ใช้ไฟล์ imread() ฟังก์ชัน
image = cv2.imread('Penguins.jpg')
ตอนนี้ใช้ไฟล์ Canny () ฟังก์ชันสำหรับตรวจจับขอบของภาพที่อ่านแล้ว
cv2.imwrite(‘edges_Penguins.jpg’,cv2.Canny(image,200,300))
ตอนนี้สำหรับการแสดงภาพที่มีขอบให้ใช้ฟังก์ชัน imshow ()
cv2.imshow(‘edges’, cv2.imread(‘‘edges_Penguins.jpg’))
โปรแกรม Python นี้จะสร้างภาพชื่อ edges_penguins.jpg ด้วยการตรวจจับขอบ
การตรวจจับใบหน้า
การตรวจจับใบหน้าเป็นหนึ่งในแอพพลิเคชั่นที่น่าสนใจของการมองเห็นด้วยคอมพิวเตอร์ซึ่งทำให้มันสมจริงและล้ำยุคมากขึ้น OpenCV มีสิ่งอำนวยความสะดวกในตัวเพื่อทำการตรวจจับใบหน้า เราจะใช้ไฟล์Haar ลักษณนามน้ำตกสำหรับการตรวจจับใบหน้า
ข้อมูล Haar Cascade
เราต้องการข้อมูลเพื่อใช้ลักษณนาม Haar cascade คุณสามารถค้นหาข้อมูลนี้ได้ในแพ็คเกจ OpenCV ของเรา หลังจากติดตั้ง OpenCv แล้วคุณจะเห็นชื่อโฟลเดอร์haarcascades. จะมีไฟล์. xml สำหรับแอปพลิเคชันอื่น ตอนนี้คัดลอกทั้งหมดเพื่อการใช้งานที่แตกต่างกันแล้ววางในโฟลเดอร์ใหม่ภายใต้โครงการปัจจุบัน
Example
ต่อไปนี้เป็นรหัส Python โดยใช้ Haar Cascade เพื่อตรวจจับใบหน้าของ Amitabh Bachan ที่แสดงในภาพต่อไปนี้ -
นำเข้าไฟล์ OpenCV แพคเกจตามที่แสดง -
import cv2
import numpy as np
ตอนนี้ใช้ไฟล์ HaarCascadeClassifier สำหรับตรวจจับใบหน้า -
face_detection=
cv2.CascadeClassifier('D:/ProgramData/cascadeclassifier/
haarcascade_frontalface_default.xml')
ตอนนี้สำหรับการอ่านภาพใดภาพหนึ่งให้ใช้ไฟล์ imread() ฟังก์ชัน -
img = cv2.imread('AB.jpg')
ตอนนี้แปลงเป็นโทนสีเทาเพราะจะรับภาพสีเทา -
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ตอนนี้ใช้ face_detection.detectMultiScaleทำการตรวจจับใบหน้าจริง
faces = face_detection.detectMultiScale(gray, 1.3, 5)
ตอนนี้วาดรูปสี่เหลี่ยมผืนผ้ารอบ ๆ ใบหน้าทั้งหมด -
for (x,y,w,h) in faces:
img = cv2.rectangle(img,(x,y),(x+w, y+h),(255,0,0),3)
cv2.imwrite('Face_AB.jpg',img)
โปรแกรม Python นี้จะสร้างภาพชื่อ Face_AB.jpg ด้วยการตรวจจับใบหน้าดังที่แสดง
การตรวจจับดวงตา
การตรวจจับดวงตาเป็นอีกหนึ่งแอปพลิเคชั่นที่น่าสนใจสำหรับการมองเห็นด้วยคอมพิวเตอร์ซึ่งทำให้สมจริงและล้ำสมัย OpenCV มีสิ่งอำนวยความสะดวกในตัวเพื่อทำการตรวจจับดวงตา เราจะใช้ไฟล์Haar cascade ลักษณนามสำหรับการตรวจจับดวงตา
ตัวอย่าง
ตัวอย่างต่อไปนี้ให้รหัส Python โดยใช้ Haar Cascade เพื่อตรวจจับใบหน้าของ Amitabh Bachan ที่ให้ไว้ในภาพต่อไปนี้ -
นำเข้าแพ็กเกจ OpenCV ดังภาพ -
import cv2
import numpy as np
ตอนนี้ใช้ไฟล์ HaarCascadeClassifier สำหรับตรวจจับใบหน้า -
eye_cascade = cv2.CascadeClassifier('D:/ProgramData/cascadeclassifier/haarcascade_eye.xml')
ตอนนี้สำหรับการอ่านภาพใดภาพหนึ่งให้ใช้ไฟล์ imread() ฟังก์ชัน
img = cv2.imread('AB_Eye.jpg')
ตอนนี้แปลงเป็นโทนสีเทาเพราะจะรับภาพสีเทา -
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ตอนนี้ด้วยความช่วยเหลือของ eye_cascade.detectMultiScaleทำการตรวจจับใบหน้าจริง
eyes = eye_cascade.detectMultiScale(gray, 1.03, 5)
ตอนนี้วาดรูปสี่เหลี่ยมผืนผ้ารอบ ๆ ใบหน้าทั้งหมด -
for (ex,ey,ew,eh) in eyes:
img = cv2.rectangle(img,(ex,ey),(ex+ew, ey+eh),(0,255,0),2)
cv2.imwrite('Eye_AB.jpg',img)
โปรแกรม Python นี้จะสร้างภาพชื่อ Eye_AB.jpg ด้วยการตรวจจับดวงตาดังภาพ -