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

下载本文档

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

文档简介

第4章一、选择题答案B解析:A选项warpAffine()支持平移、旋转、缩放,错误;C选项dsize格式为(width,height),与shape的(height,width)相反,错误;D选项需通过flags指定插值方法,错误;B选项正确。C解析:旋转中心为(w//2,h//2)(x=宽度/2,y=高度/2),顺时针旋转角度为-90,缩放0.7,C选项参数全部正确;A选项角度为90(逆时针),B选项旋转中心顺序错误(h//2是y,w//2是x),D选项角度和缩放错误,均错误。C解析:INTER_CUBIC(双三次插值)质量最高,适合放大;INTER_AREA适合缩小,INTER_NEAREST质量最差,INTER_LINEAR中等,C选项正确。A解析:仿射变换需3个点,透视变换需4个点,A正确;B选项相反(仿射保持平行线,透视不保持),C选项函数混淆,D选项两者均支持多种变换,均错误。B解析:flipCode=1为水平翻转,B正确;A是垂直翻转,C是双向翻转,D是仿射变换,均错误。二、填空题答案x轴(水平);y轴(垂直);右解析:平移矩阵中,dx控制水平方向(右为正),dy控制垂直方向(下为正)。fx;fy;拉伸(或变形)解析:fx和fy分别为x和y方向的缩放比例,相同则保持宽高比,避免图像拉伸。3×3;cv2.warpPerspective()解析:透视矩阵为3×3(仿射矩阵为2×3),需用warpPerspective()应用变换。三、实操题答案代码示例:importcv2#1.读取风景图像img=cv2.imread("mountain.jpg",cv2.IMREAD_COLOR)ifimgisNone:print("图像读取失败!")else:#获取原图尺寸h_original,w_original,_=img.shapeprint(f"原图尺寸:宽度={w_original}像素,高度={h_original}像素")#2.步骤1:垂直翻转(flipCode=0)img_flip_v=cv2.flip(img,flipCode=0)print("垂直翻转完成!")#3.步骤2:缩小为原图的60%(fx=0.6,fy=0.6,INTER_AREA插值)img_small=cv2.resize(img_flip_v,dsize=None,fx=0.6,fy=0.6,interpolation=cv2.INTER_AREA)#获取缩小图尺寸h_small,w_small,_=img_small.shapeprint(f"缩小完成!缩小图尺寸:宽度={w_small}像素,高度={h_small}像素")#4.添加文字标注cv2.putText(img,"1.Original",(20,40),cv2.FONT_HERSHEY_SIMPLEX,1,(0,255,0),2)cv2.putText(img_flip_v,"2.FlipVertical(0)",(20,40),cv2.FONT_HERSHEY_SIMPLEX,1,(0,255,0),2)cv2.putText(img_small,"3.Scaled60%(INTER_AREA)",(20,40),cv2.FONT_HERSHEY_SIMPLEX,1,(0,255,0),2)#5.显示对比cv2.imshow("1.OriginalImage",img)cv2.imshow("2.VerticalFlipImage",img_flip_v)cv2.imshow("3.FinalSmallImage",img_small)#6.保存最终结果cv2.imwrite("mountain_final.jpg",img_small)print("最终缩小图像已保存!")cv2.waitKey(0)cv2.destroyAllWindows()解析:垂直翻转后图像上下颠倒(天空在下,地面在上),缩小后无明显模糊(INTER_AREA插值适合缩小),代码中打印尺寸可验证缩放比例是否正确(缩小后尺寸约为原图的60%)。2.代码示例:importcv2importnumpyasnp#1.读取轻微倾斜的文本图像img=cv2.imread("text_slight_tilt.jpg",cv2.IMREAD_COLOR)ifimgisNone:print("文本图像读取失败!")else:h,w,_=img.shapeimg_pts=img.copy()#用于绘制标记点#2.手动选择3个非共线点(文本框的左上、右上、左下,需根据实际图像调整)src_pts=np.float32([[40,50],#左上点(示例值,需修改)[340,60],#右上点(示例值,需修改)[50,180]])#左下点(示例值,需修改)#3.定义目标点(校正为水平,右上点y坐标与左上点相同)dst_pts=np.float32([[40,50],#目标左上(与原图一致)[340,50],#目标右上(y=50,水平)[40,180]])#目标左下(与原图一致)#4.绘制原始点(蓝色圆点,半径5,填充)for(x,y)insrc_pts:cv2.circle(img_pts,(int(x),int(y)),5,(255,0,0),-1)#5.生成仿射变换矩阵M=cv2.getAffineTransform(src_pts,dst_pts)#6.应用仿射变换img_corrected=cv2.warpAffine(img,M,(w,h))#7.添加文字标注cv2.putText(img_pts,"1.Original(3BluePoints)",(20,30),cv2.FONT_HERSHEY_SIMPLEX,0.8,(0,0,255),2)cv2.putText(img_corrected,"2.AffineCorrected(Horizontal)",(20,30),cv2.FONT_HERSHEY_SIMPLEX,0.8,(0,0,255),2)#8.显示对比cv2.imshow("1.OriginalText(withPoints)",img_pts)cv2.imshow("2.CorrectedText",img_corrected)#9.保存校正结果cv2.imwrite("text_affine_final

温馨提示

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

评论

0/150

提交评论