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

下载本文档

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

文档简介

第3章一、选择题答案C解析:A选项灰度化是单通道,错误;B选项灰度化需考虑人眼对绿光敏感(加权平均法),错误;D选项灰度化保留明暗细节,错误;C选项正确。B解析:自适应阈值根据局部亮度调整阈值,能解决光照不均问题;全局阈值无法处理局部明暗差异,A错误;C、D不符合实际,错误。C解析:中值滤波取区域中值,能有效消除椒盐噪声(极端值);均值和高斯滤波对椒盐噪声效果差,A、B错误;D错误。D解析:Canny的步骤是“高斯滤波→梯度计算→NMS→双阈值筛选”,无全局阈值二值化,D错误;A、B、C正确。A解析:Sobel算子中,dx=1表示计算x方向导数(检测水平边缘),dy=0表示不计算y方向,A正确;B是检测垂直边缘,C、D错误。二、填空题答案0(黑);255(白)解析:THRESH_BINARY_INV是“反二进制阈值”,与THRESH_BINARY相反,适合文本反转。ksize;sigmaX解析:高斯滤波的核心参数是滤波核大小(ksize,如(3,3))和X方向标准差(sigmaX),sigmaX越大,去噪越强。1/2~1/3;噪声(或虚假边缘)解析:低阈值过小,会将噪声误判为边缘,导致虚假边缘增多;低阈值过大,会丢失真实边缘。滤波(或去噪)解析:噪声会导致“虚假边缘”,边缘检测前先去噪(如高斯滤波),能提高边缘检测的准确性。三、实操题答案代码示例:importcv2importnumpyasnp#定义添加高斯噪声的函数(复用本章示例5)defadd_gaussian_noise(img,mean=0,var=0.005):img_float=img.astype(np.float32)/255gaussian=np.random.normal(mean,var**0.5,img.shape)img_noise=img_float+gaussianimg_noise=np.clip(img_noise,0,1)*255returnimg_noise.astype(np.uint8)#1.读取灰度图像gray_img=cv2.imread("lena_gray.jpg",cv2.IMREAD_GRAYSCALE)ifgray_imgisNone:print("图像读取失败!")else:#2.添加方差0.01的高斯噪声img_gaussian=add_gaussian_noise(gray_img,var=0.01)print("高斯噪声添加完成!")#3.三种去噪方法#3×3均值滤波mean3=cv2.blur(img_gaussian,(3,3))#3×3高斯滤波(sigmaX=1)gauss3=cv2.GaussianBlur(img_gaussian,(3,3),sigmaX=1)#5×5高斯滤波(sigmaX=2)gauss5=cv2.GaussianBlur(img_gaussian,(5,5),sigmaX=2)print("三种去噪方法完成!")#4.显示对比cv2.imshow("1.OriginalGrayLena",gray_img)cv2.imshow("2.ImagewithGaussianNoise(var=0.01)",img_gaussian)cv2.imshow("3.MeanFilter(3×3)",mean3)cv2.imshow("4.GaussianFilter(3×3,sigmaX=1)",gauss3)#最优cv2.imshow("5.GaussianFilter(5×5,sigmaX=2)",gauss5)#5.保存最优结果cv2.imwrite("lena_denoised.jpg",gauss3)print("最优去噪图已保存!")cv2.waitKey(0)cv2.destroyAllWindows()解析:3×3高斯滤波在去噪的同时保留了Lena的面部细节,5×5高斯滤波虽去噪更强但细节模糊,均值滤波效果最差,因此选择3×3高斯滤波为最优。2.代码示例:importcv2#1.读取含单一物体的彩色图像(如"apple.jpg")color_img=cv2.imread("apple.jpg",cv2.IMREAD_COLOR)ifcolor_imgisNone:print("物体图像读取失败!")else:#2.步骤1:灰度化gray_img=cv2.cvtColor(color_img,cv2.COLOR_BGR2GRAY)#3.步骤2:高斯滤波去噪(5×5核,sigmaX=1)gray_blur=cv2.GaussianBlur(gray_img,(5,5),sigmaX=1)#4.步骤3:Canny边缘检测(阈值40,120)canny_edges=cv2.Canny(gray_blur,40,120)#5.步骤4:查找最外层轮廓contours,_=cv2.findContours(canny_edges,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)print(f"找到{len(contours)}个物体轮廓!")#6.步骤5:绘制轮廓(红色,线宽2)img_with_contour=color_img.copy()cv2.drawContours(img_with_contour,contours,-1,(0,0,255),2)#7.显示对比cv2.imshow("1.OriginalObjectImage",color_img)cv2.imshow("2.GrayscaleImage",gray_img)cv2.imshow("3.CannyEdges",canny_edges)cv2.imshow("4.ObjectwithRedContour",img_with_contour)#8.保存结果cv2.imwrite("object_contour.jpg",img_with_contour)print("带轮

温馨提示

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

评论

0/150

提交评论