当前位置:   article > 正文

基本的图像操作_import cv2 def lap(): filepath = '/data/workspace/

import cv2 def lap(): filepath = '/data/workspace/myshixun/task4/' # 读取图

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 ##########


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

第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 ##########

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

第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 ##########

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

大家需要平台上的实验答案,可以留言,博主尽量帮助你们分享!!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/226019
推荐阅读
相关标签
  

闽ICP备14008679号