赞
踩
OpenCV 提供了很多图像操作的工具,例如图像的读取与保存、滤波等工具。这些工具是开发计算机视觉项目的基础,因此熟悉与掌握这些工具的使用对以后的学习任务非常重要。
本实训针对图片的基本读取和保存、图片通道分离与合并、边界填充与图片融合等操作进行介绍,通过基本知识与实际案例结合的方式,并辅助以练习,帮助你熟悉与掌握 OpenCV 的使用。
第1关:图片的基本读取和保存操作
import cv2 def Gen(): filepath = '/data/workspace/myshixun/task1/cat.jpg' # 读取给定路径filepath的图片cat.jpg ########## Begin ########## retval=cv2.imread(filepath) ########## End ########## # 读取感兴趣窗口[100:150,200:300]并保存为指定路径savepath savepath='/data/workspace/myshixun/task1/out/cap.png' ########## Begin ########## img3 = retval[100:150,200:300] cv2.imwrite(savepath, img3) ########## End ##########
第2关:图像通道分离与合并操作
import cv2 # 实现图像颜色通道分离和保存 def task2(): filepath = "/data/workspace/myshixun/task2/" img = cv2.imread( filepath + 'pic.jpg') # 请分离图像的B,G,R通道,并保存到给定filepath下的out文件夹, # 三个通道分别保存为r.png、g.png、b.png ########## Begin ########## B,G,R = cv2.split(img) cv2.imwrite(filepath+'/out/r.png',R) cv2.imwrite(filepath+'/out/G.png',G) cv2.imwrite(filepath+'/out/b.png',B) ########## End ########## # 请合并分离的通道,并在out文件夹下保存红色通道的彩色图像color_r.png ########## Begin ########## img1 = cv2.merge((B,G,R)) img1[:, :, 0] = 0 img1[:, :, 1] = 0 cv2.imwrite(filepath+'/out/color_r.png', img1) ########## End ##########
第3关:边界填充与图像融合
import cv2 import warnings import matplotlib.cbook warnings.filterwarnings("ignore",category=matplotlib.cbook.mplDeprecation) def padding(): filepath = "/data/workspace/myshixun/task3/" # 请按照step1的要求完成图像填充操作 ########## Begin ########## # 1. 读取图片filepath文件夹下的six.png img = cv2.imread(filepath + 'six.png') # 2. 定义上下左右扩充的长度为30。 top_size, bottom_size, left_size, right_size = (30, 30, 30, 30) # 3. 根据本节教程所学,更换通道顺序。 img = img[:,:,(2,1,0)] # 4. 参考本节给出的示例,请分别完成填充类型 replicate = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REPLICATE) reflect = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size,cv2.BORDER_REFLECT) reflect101 = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_REFLECT_101) wrap = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_WRAP) constant = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size,cv2.BORDER_CONSTANT, value=0) ########## End ########## # 绘制图像并保存 import matplotlib.pyplot as plt plt.subplot(231), plt.imshow(img), plt.title('ORIGINAL') plt.subplot(232), plt.imshow(replicate), plt.title('REPLICATE') plt.subplot(233), plt.imshow(reflect), plt.title('REFLECT') plt.subplot(234), plt.imshow(reflect101), plt.title('REFLECT_101') plt.subplot(235), plt.imshow(wrap), plt.title('WRAP') plt.subplot(236), plt.imshow(constant), plt.title('CONSTANT') plt.savefig(filepath + "out/padding.png") def fusion(): filepath = "/data/workspace/myshixun/task3/" savepath = "/data/workspace/myshixun/task3/out/fusion.png" # 请按照step1的要求完成图像融合操作。 ########## Begin ########## # 1. 读取filepath路径下的cat.jpg, dog.jpg img_cat = cv2.imread(filepath + 'cat.jpg') img_dog = cv2.imread(filepath + 'dog.jpg') # 2. resize两个读取的图像为相同大小(550, 366) img_cat_resize = cv2.resize(img_cat, (550, 366)) img_dog_resize = cv2.resize(img_dog, (550, 366)) # 3. 根据要求,融合两张读取的图像 res = cv2.addWeighted(img_cat_resize, 0.7, img_dog_resize, 0.3, 0) # 4. 在savepath下保存融合的图片 cv2.imwrite(savepath, res) ########## End ##########
大家需要平台上的实验答案,可以留言,博主尽量帮助你们分享!!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。