计算机视觉应用开发案例教程(OpenCV)习题答案 第7章_第1页
计算机视觉应用开发案例教程(OpenCV)习题答案 第7章_第2页
计算机视觉应用开发案例教程(OpenCV)习题答案 第7章_第3页
计算机视觉应用开发案例教程(OpenCV)习题答案 第7章_第4页
计算机视觉应用开发案例教程(OpenCV)习题答案 第7章_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

第7章一、选择题答案B解析:全局阈值适合前景背景灰度差异明显、光照均匀的图像,B选项符合;A、D需Otsu阈值,C需分水岭,均错误。A解析:Otsu的核心是自动计算最优阈值,无需手动调参,A正确;B是分水岭的优势,C需预处理(去噪),D速度比全局阈值慢,均错误。C解析:cv2.drawContours()中线宽设为-1表示填充轮廓内部,实现区域填充,A、B是绘制轮廓线,D无线,均错误。C解析:不确定区域是“背景-前景”的差值区域,即物体边界,算法会自动分割,A是前景,B是背景,D是预处理需过滤的区域,均错误。D解析:分水岭需去噪、阈值分割、开运算,无需提前轮廓提取(分割后自动得到区域),D正确。二、填空题答案0(黑);255(白)解析:THRESH_BINARY_INV是反二进制阈值,与THRESH_BINARY相反,适合前景暗、背景亮的场景。图像预处理(或灰度化→去噪→边缘检测);轮廓提取(或cv2.findContours)解析:轮廓分割需先预处理得到清晰边缘,再提取轮廓,最后填充。距离(或cv2.distanceTransform);膨胀(或cv2.dilate)解析:距离变换得到物体中心(确定前景),膨胀扩大背景,包围所有物体。边界(或不同物体的分隔)解析:分水岭用-1标记边界,方便用户直观区分不同物体。实操题答案1.代码示例:importcv2importnumpyasnp#1.读取手写数字图像img_color=cv2.imread("handwritten_digits.jpg",cv2.IMREAD_COLOR)ifimg_colorisNone:print("图像读取失败!")else:#2.预处理img_gray=cv2.cvtColor(img_color,cv2.COLOR_BGR2GRAY)#高斯滤波(3×3)img_blur=cv2.GaussianBlur(img_gray,(3,3),sigmaX=1)#二值化(反色,数字为白色,背景为黑色,Otsu自动阈值)ret_otsu,img_binary=cv2.threshold(img_blur,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)#3.提取轮廓(最外层轮廓)contours,_=cv2.findContours(img_binary,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)#4.过滤噪声(面积<100)valid_contours=[]forcntincontours:ifcv2.contourArea(cnt)>=100:valid_contours.append(cnt)digit_count=len(valid_contours)print(f"提取到{digit_count}个数字!")#5.定义颜色列表(10种颜色,对应0-9)colors=[(0,255,0),(255,0,0),(0,0,255),(255,255,0),(255,0,255),(0,255,255),(128,0,0),(0,128,0),(0,0,128),(128,128,128)]#6.绘制矩形框和序号fori,cntinenumerate(valid_contours):#获取轮廓的boundingRect(最小矩形)x,y,w,h=cv2.boundingRect(cnt)#绘制矩形框(对应颜色)cv2.rectangle(img_color,(x,y),(x+w,y+h),colors[i%len(colors)],2)#标注序号(i从0开始,对应数字0-9)cv2.putText(img_color,str(i),(x+5,y+20),cv2.FONT_HERSHEY_SIMPLEX,0.8,colors[i%len(colors)],2)#7.添加总数文字cv2.putText(img_color,f"TotalDigits:{digit_count}",(10,30),cv2.FONT_HERSHEY_SIMPLEX,0.8,(0,0,255),2)#8.显示与保存cv2.imshow("HandwrittenDigitsSegmentation",img_color)cv2.imwrite("digits_segmented.jpg",img_color)print("数字分割结果已保存!")cv2.waitKey(0)cv2.destroyAllWindows()解析:用cv2.boundingRect()获取数字的最小矩形,比直接绘制轮廓更直观;颜色列表确保每个数字颜色不同,序号标注清晰,过滤面积<100的噪声,避免误判。2.代码示例:importcv2importnumpyasnp#1.读取重叠坚果图像img_color=cv2.imread("nuts_overlapped.jpg",cv2.IMREAD_COLOR)ifimg_colorisNone:print("坚果图像读取失败!")else:img_gray=cv2.cvtColor(img_color,cv2.COLOR_BGR2GRAY)h,w=img_gray.shapeimg_copy=img_color.copy()#用于显示原图#2.预处理#高斯滤波(5×5)img_blur=cv2.GaussianBlur(img_gray,(5,5),sigmaX=1)#Otsu阈值分割(反色,坚果为白,背景为黑)ret_otsu,img_binary=cv2.threshold(img_blur,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)#开运算(3×3核,1次)kernel=np.ones((3,3),np.uint8)img_open=cv2.morphologyEx(img_binary,cv2.MORPH_OPEN,kernel,iterations=1)#3.确定前景、背景、不确定区域#背景:膨胀3次img_bg=cv2.dilate(img_open,kernel,iterations=3)#前景:距离变换+0.6×最大距离img_dist=cv2.distanceTransform(img_open,cv2.DIST_L2,5)ret_dist,img_fg=cv2.threshold(img_dist,0.6*img_dist.max(),255,0)img_fg=np.uint8(img_fg)#不确定区域img_unknown=cv2.subtract(img_bg,img_fg)#4.创建标记ret_marker,markers=cv2.connectedComponents(img_fg)markers=markers+1#前景标记+1markers[img_unknown==255]=0#不确定区域设为0#5.分水岭分割markers=cv2.watershed(img_color,markers)#边界设为绿色(B=0,G=255,R=0)img_color[markers==-1]=[0,255,0]#6.计数nut_markers=np.unique(markers)nut_count=0formarkerinnut_markers:ifmarker>=2:nut_count+=1print(f"分割出{nut_count}个坚果!")#7.添加计数文字cv2.putText(img_color,f"NutCount:{nut_count}(GreenBoundary)",(10,30),cv2.FONT_HERSHEY_SIMPLEX,0.8,(255,0,0),2)#8.显示与保存cv2.imshow("1.OriginalImage",img_copy)cv2.imshow("2.OtsuBinaryImage",img_binary)cv2.imshow("3.ForegroundImage",img_fg)cv2.imshow("4.Watershed

温馨提示

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

最新文档

评论

0/150

提交评论