计算机视觉应用开发案例教程(OpenCV)习题答案 第6章_第1页
计算机视觉应用开发案例教程(OpenCV)习题答案 第6章_第2页
计算机视觉应用开发案例教程(OpenCV)习题答案 第6章_第3页
计算机视觉应用开发案例教程(OpenCV)习题答案 第6章_第4页
计算机视觉应用开发案例教程(OpenCV)习题答案 第6章_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章一、选择题答案B解析:Haar级联分类器仅支持单通道图像,检测前需将彩色图转为灰度图,A、C、D错误,B正确。B解析:scaleFactor是检测时图像的缩放比例,值越小检测越精细,A是minSize的作用,C是minNeighbors的作用,D是maxSize的作用,B正确。B解析:减小minNeighbors会降低检测的严格程度,减少漏检,A、C、D会增加漏检或无影响,B正确。B解析:cv2.VideoCapture(0)打开默认摄像头,1表示外接摄像头,A、C、D函数或参数错误,B正确。C解析:提取人脸ROI,仅在ROI内检测眼睛,避免背景干扰,A、B、D无此作用,C正确。二、填空题答案cv2.CascadeClassifier();cv2.CascadeClassifier.detectMultiScale()解析:前者加载模型,后者检测目标,需写完整函数名(含类名)。左上角;宽度和高度解析:(x,y)是目标左上角像素坐标,w是宽度(水平方向),h是高度(垂直方向)。cv2.VideoCapture.read();cv2.VideoCapture.release()解析:read()返回(ret,frame),release()释放摄像头资源,避免占用。ROI(或感兴趣区域)解析:仅对人脸ROI滤波,不影响背景,是局部处理的核心。实操题答案1.代码示例:importcv2#1.加载眼睛级联模型(替换为你的路径)eye_model_path="haarcascade_eye.xml"eye_clf=cv2.CascadeClassifier(eye_model_path)ifeye_clf.empty():print("眼睛模型加载失败!请检查路径。")else:#2.读取含眼睛的图像img=cv2.imread("lena.jpg",cv2.IMREAD_COLOR)ifimgisNone:print("图像读取失败!")else:#3.灰度化gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#4.检测眼睛(参数:眼睛较小,minSize设小)eyes=eye_clf.detectMultiScale(gray,scaleFactor=1.1,minNeighbors=3,minSize=(15,15),#眼睛尺寸小,minSize=15maxSize=(100,100))#5.处理结果iflen(eyes)==0:print("未检测到眼睛!可尝试减小minNeighbors或minSize。")cv2.putText(img,"NoEyesDetected",(50,50),cv2.FONT_HERSHEY_SIMPLEX,1,(0,0,255),2)else:print(f"检测到{len(eyes)}只眼睛!")for(x,y,w,h)ineyes:#绘制蓝色矩形框(B=255,G=0,R=0)cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)cv2.putText(img,"Eye",(x,y-10),cv2.FONT_HERSHEY_SIMPLEX,0.7,(255,0,0),2)#6.显示与保存cv2.imshow("EyeDetectionResult",img)cv2.imwrite("eye_detection.jpg",img)print("眼睛检测结果已保存!")cv2.waitKey(0)cv2.destroyAllWindows()解析:眼睛检测的关键是minSize设小(15~30),因眼睛尺寸通常比人脸小;若未检测到,可减小minNeighbors至2或scaleFactor至1.05。2.代码示例:importcv2#1.加载人脸和微笑模型(替换为你的路径)face_model="haarcascade_frontalface_default.xml"smile_model="haarcascade_smile.xml"face_clf=cv2.CascadeClassifier(face_model)smile_clf=cv2.CascadeClassifier(smile_model)ifface_clf.empty()orsmile_clf.empty():print("模型加载失败!")else:#2.打开默认摄像头cap=cv2.VideoCapture(0)ifnotcap.isOpened():print("摄像头打开失败!")else:print("摄像头已打开,按'q'退出!")whileTrue:ret,frame=cap.read()ifnotret:print("无法读取帧!")breakgray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)#3.检测人脸faces=face_clf.detectMultiScale(gray,1.2,5,(50,50))for(x_face,y_face,w_face,h_face)infaces:#绘制人脸框(绿色)cv2.rectangle(frame,(x_face,y_face),(x_face+w_face,y_face+h_face),(0,255,0),2)cv2.putText(frame,"Face",(x_face,y_face-10),cv2.FONT_HERSHEY_SIMPLEX,0.7,(0,255,0),2)#4.提取人脸ROI(微笑检测仅在ROI内)#微笑通常在人脸下半部分,可缩小ROI范围(y_face+h_face//2开始)smile_roi_gray=gray[y_face+h_face//2:y_face+h_face,x_face:x_face+w_face]smile_roi_color=frame[y_face+h_face//2:y_face+h_face,x_face:x_face+w_face]#5.检测微笑(参数宽松,因微笑特征不明显)smiles=smile_clf.detectMultiScale(smile_roi_gray,scaleFactor=1.1,minNeighbors=2,minSize=(30,30))#绘制微笑框(黄色)for(x_smile,y_smile,w_smile,h_smile)insmiles:cv2.rectangle(smile_roi_color,(x_smile,y_smile),(x_smile+w_smile,y_smile+h_smile),(0,255,255),2)cv2.putText(smile_roi_color,"Smile",(x_smile,y_smile-5),cv2.FONT_HERSHEY_SIMPLEX,0.5,(0,255,255),1)#6.显示实时帧cv2.imshow("Real-timeFace+SmileDetection",frame)#按q退出ifcv2.waitKey(1)&0xFF==ord

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论