Opencv-图像基本操作(读取,融合,边界填充等)

Opencv 图像基本操作

此操作都在pycharm中完成,代码博主演示通过。

import cv2
import matplotlib.pyplot as plt
  • 读取图像并显示:
img = cv2.imread('xx.png')
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows() 

此处 我将xx.png(图片)直接放在 F:\PycharmProjects 目录下也就是我电脑pycharm的文件存储目录。

  • 图像属性读取
print(img.shape)
print(img.size)
var = type(img)
print(var)

打印出:
(512, 512, 3)
786432
<class ‘numpy.ndarray’>

  • 颜色通道分离,0 1 2  分别对应(B G R)
cur_img = img.copy()
cur_img[:, :, 1] = 0
cur_img[:, :, 2] = 0
cv2.imshow('B', cur_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

此示例分离出 G R两个通道,保留了B (blue)通道,所以图像显示出是蓝色调;

cur_img[:, :, 1] = 0

其中[:, :, 1] 解释为,前部分 :, :, 选取该图像G通道的所有像素点

  • 边界填充
top_size, bottom_size, left_size, right_size = (50, 50, 50, 50)
replicate = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REFLECT101)
cv2.imshow('replicate', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

此处用到了opencv滤波算法中的 copyMakeBorder() 函数和 borderInterpolate()函数;原理:扩充原图的边缘,将图像变大,然后以各种外插方式自动填充图像边界

边界填充有多种方法:

  • BORDER_REPLICATE: aaaaaa|abcdefgh|hhhhhhh #复制法
  • BORDER_REFLECT: fedcba|abcdefgh|hgfedcb #对称法
  • BORDER_REFLECT_101: gfedcb|abcdefgh|gfedcba
  • BORDER_WRAP: cdefgh|abcdefgh|abcdefg #用另外一边边缘像素来填充
  • BORDER_CONSTANT: iiiiii|abcdefgh|iiiiiii with some specified ‘i’ #常量法

后面的 aaaaaa|abcdefgh|hhhhhhh 意思是 复制最边界像素的值;

  • 图像融合 (先转化成大小一样的图片再融合)
var1 = img.shape
print(var1)
var2 = img1.shape
print(var2)
img = cv2.resize(img, (512, 512))  # 注意此处的参数(500, 512)中的500对应原图片的第二个480
print(img.shape)
res = cv2.addWeighted(img, 0.4, img1, 0.6, 0)   # 0.4, 0.6为两张照片的权重,0为偏置项 方程为:Qx1 + Px2 + b| Q,P为权重
cv2.imshow('res', res)
cv2.waitKey(0)
cv2.destroyAllWindows()

值得注意的是 使用resize()函数时 输入的参数对应原图像是相反的
此处img的原始大小为 (480 480 3) 需要转变和img1 相同大小 (512 512 3)
定义两张照片的融合权重后,打印输出。

原图

在这里插入图片描述2

融合后:在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值