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

下载本文档

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

文档简介

第2章一、选择题答案C解析:img.size是总像素数,彩色图像总像素数=高度×宽度×通道数(3),C选项少乘通道数,错误;A、B、D均正确。A解析:ROI切片遵循“行(高度)→列(宽度)”顺序,50:150表示行50到149(共100行),100:200表示列100到199(共100列);B选项顺序颠倒,C选项符号错误(应为:),D选项多取了0通道(B通道),均错误。B解析:cv2.split()分离彩色图像时,按“B→G→R”顺序返回通道,与OpenCV的BGR存储顺序一致;A、C顺序错误,D函数调用格式错误(无需传入通道变量)。A解析:全黑灰度图需用np.zeros()(全0),形状为(高度,宽度),100为高度、200为宽度;B选项形状颠倒,C选项用np.ones()(全1,非黑),D选项是3通道彩色图,均错误。C解析:代码将像素值大于128的设为255(白),小于等于128的设为0(黑),符合二值化定义;A、B、D均不符合代码逻辑。二、填空题答案高度;宽度;3个通道(B、G、R)解析:(h,w,3)是彩色图像的标准形状,h=height(高度),w=width(宽度),3对应B、G、R三个通道。np.stack();2解析:np.stack()可在指定维度堆叠数组,axis=2表示在第3个维度(通道维度)堆叠,将3个灰度数组转为3通道彩色数组。[0,0,255]解析:img[:,:,2]是R通道,筛选出R>200的像素后,赋值为[0,0,255](红色),符合需求。将多个单通道数组合并为多通道图像;3个单通道数组(顺序为B、G、R)解析:cv2.merge()需传入包含3个单通道数组的列表(如[b,g,r]),合并为BGR彩色图像。三、实操题答案代码示例:importcv2importnumpyasnp#1.读取彩色图像img=cv2.imread("lena.jpg",cv2.IMREAD_COLOR)ifimgisNone:print("❌图像读取失败!")else:#2.打印图像属性h,w,ch=img.shapetotal_pixels=img.sizeprint(f"图像属性:")print(f"高度:{h}像素")print(f"宽度:{w}像素")print(f"通道数:{ch}")print(f"总像素数:{total_pixels}")#3.提取中心ROI(高度100,宽度100)roi_h,roi_w=100,100#计算ROI起始坐标(居中:(总高度-ROI高度)/2,(总宽度-ROI宽度)/2)roi_y_start=(h-roi_h)//2roi_y_end=roi_y_start+roi_hroi_x_start=(w-roi_w)//2roi_x_end=roi_x_start+roi_w#提取ROIroi=img[roi_y_start:roi_y_end,roi_x_start:roi_x_end,:]print(f"ROI形状:{roi.shape}(预期:({roi_h},{roi_w},{ch}))")#4.修改ROI的G通道(索引1)为255roi[:,:,1]=255#G通道全设为255#将修改后的ROI放回原图像(直接赋值)img[roi_y_start:roi_y_end,roi_x_start:roi_x_end,:]=roi#5.标记ROI(红色矩形框)cv2.rectangle(img,(roi_x_start,roi_y_start),(roi_x_end,roi_y_end),(0,0,255),2)cv2.putText(img,"ROI(G=255)",(roi_x_start,roi_y_start-10),cv2.FONT_HERSHEY_SIMPLEX,0.6,(0,0,255),2)#6.显示与保存cv2.imshow("OriginalImage",cv2.imread("lena.jpg",cv2.IMREAD_COLOR))#原图cv2.imshow("ModifiedImage(ROIG=255)",img)#修改图cv2.imwrite("lena_roi_modified.jpg",img)print("修改后的图像已保存!")cv2.waitKey(0)cv2.destroyAllWindows()2.代码示例:importcv2importnumpyasnp#1.读取灰度图像gray_img=cv2.imread("city_gray.jpg",cv2.IMREAD_GRAYSCALE)ifgray_imgisNone:print("图像读取失败!")else:h,w=gray_img.shapeprint(f"灰度图尺寸:{h}×{w}像素")#2.方法1:for循环遍历像素反色inverted_for=gray_img.copy()#复制原图,避免修改原数据foryinrange(h):forxinrange(w):inverted_for[y,x]=255-inverted_for[y,x]print("方法1(for循环)反色完成!")#3.方法2:NumPy数组运算反色(无循环,效率高)inverted_np=255-gray_img#直接数组相减,自动广播#确保数据类型为uint8(避免溢出,NumPy会自动处理,但建议显式转换)inverted_np=inverted_np.astype(np.uint8)print("方法2(NumPy)反色完成!")#4.验证两种方法结果是否一致is_same=np.array_equal(inverted_for,inverted_np)print(f"两种方法结果是否一致?{is_same}(预期:True)")#5.显示与保存cv2.imshow("OriginalGrayImage",gray_img)cv2.imshow("Inverted(ForLoop)",inverted_for)cv2.imshow("Inverted(NumPy)",inverted_np)cv2.imwrite("city_gray_inverted.jpg",inverted_n

温馨提示

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

评论

0/150

提交评论