如何解决从haarcascade中提取眼睛
我知道如何使用opencv和haarcascade识别面部和眼睛。但是,我该如何修剪或仅从摄像头中捕捉眼睛?只是一个,甚至两者都有,所以我可以在imshow中用作新框架...
解决方法
在此信息上查看:
How to crop an image in OpenCV using Python
import cv2
img = cv2.imread("lenna.png")
crop_img = img[y:y+h,x:x+w]
cv2.imshow("cropped",crop_img)
cv2.waitKey(0)
您的“ img [y:y + h,x:x + w]”只是您的级联输出。也许您收到多个输出,所以必须选择一个。
,检测到脸部之后即可执行此操作。
eyes = eye_cascade.detectMultiScale(roi_gray)
for ex,ey,ew,eh in eyes:
roi = roi_color[ey:ey + ew,ex:ex + eh]
然后可以使用cv2.imshow()显示roi。
,haarcascade_eye.xml和haarcascade_frontalface_default.xml链接文件
import cv2
eye_cascade = cv2.CascadeClassifier("haarcascade_eye.xml")
face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
#load image saved in the same directory
img = cv2.imread("your_image.jpg")
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray,1.3,5)
for f in faces:
x,y,w,h = [ v for v in f ]
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0),2)
alt_gray = gray[y:y+h,x:x+w]
alt_color = img[y:y+h,x:x+w]
eyes = eye_cascade.detectMultiScale(alt_gray)
eye_crop = []
for f in eyes:
x,h = [ v for v in f ]
cv2.rectangle(alt_color,2)
# Define the region of interest in the image
eye_crop.append(alt_gray[y:y+h,x:x+w])
for eye in eye_crop:
cv2.imshow('eye',eye)
cv2.waitKey(0)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。