总结:

图像的基本概念:

OpenCV 中图像读入的数据格式是ndarray 数据格式。

通道顺序的改变

ndarray的通道顺序为 B G R

更换通道顺序为 R G B

img=img[:,:,(2,1,0)]

0——B   1——G  2——R

图像属性

即mat对象的属性

Img.shape:

输出(宽度,长度,通道数)

img.shape[0]:输出宽度

Img.shape[1]:输出长度

Img.shape[2]:输出通道数

Image.size:输出像素

Image.dtype:输出数据类型

输入

print("长度:", img.shape[1], "宽度:", img.shape[0], "通道:", img.shape[2], "像素:", img.size, "数据类型:", img.dtype)

输出

长度: 462 宽度: 489 通道: 3 像素: 677754 数据类型: uint8

图片的边缘填充

cv2.copyMakeBorder(原图像, 【目标图像】, 上方向扩充长度, 下方向扩充长度, 左方向扩充长度, 右方向扩充长度, borderType=填充操作的类型, 【常数填充时的颜色值】)

borderType: 填充的类型。OpenCV 填充的类型有:

BORDER_DEFAULT:将最近的像素进行复制填充;

BORDER_REPLICATE:复制最近的一行或一列像素并一直延伸至添加边缘的宽度或高度;

BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制。我们使用字母为例,左右复制abcdefgh靠近边缘的 6 个字母: fedcba | abcdefgh | hgfedc;

BORDER_REFLECT_101:反射法,也就是以最边缘像素为轴,对称复制。同样的,使用字母为例:gfedcba | abcdefg | gfedcba;

BORDER_WRAP:外包装法。相当于截断复制: cdefgh | abcdefgh | abcdefg;

BORDER_CONSTANT:常量法,常数值填充。

示例:

replicate = cv2.copyMakeBorder(img, 30, 30, 30, 30, borderType=cv2.BORDER_REPLICATE)

图像的融合

cv2.addWeighted(原图片1, 原图片1的权重, 原图片2, 原图片2的权重, 加和后的偏置量, 【输出图片】, 【输出图片的可选深度】)

被叠加的两幅图像必须是尺寸相同、类型相同的。

图片的重置大小

cv2.resize(需要重置的图片,【目标图片】, 【图片尺寸(M,N), 【x轴的缩放系数】, 【y轴的缩放系数】, 【插入方式】)

图片融合的示例

将图 2 苹果和梨的图像进行融合,权值分别为0.5, 0.5,输出图片大小为550×366

图2 苹果(左)和 梨(右)

具体步骤如下:

读取两个图像,并输出它们的尺寸:

​​​​​​​img_apple = cv2.imread('apple.png')img_pear = cv2.imread('pear.png')print('img_apple size', img_apple.shape)print('img_pear size', img_pear.shape)

我们得到输出:

可以看到,两张图片的的尺寸大小不同。这时,使用cv2.resize:

我们仅使用它的重置大小功能:

img_apple_resize = cv2.resize(img_apple, (550, 366))img_pear_resize = cv2.resize(img_pear, (550, 366))

使用cv2.addWeighted函数实现图像融合:

res = cv2.addWeighted(img_apple_resize, 0.5, img_pear_resize, 0.5, 0)

融合后的图像如图 3 所示。

图3 融合后的图像

OpenCV入门 图像的边缘填充与融合相关推荐

  1. opencv 利用图像轮廓函数填充圆环内部 图像轮廓函数应用小例子

    实验: import cv2 as cv import numpy as np# 1.读入圆环 img = cv.imread('circle_ring.jpg') img_gray = cv.cvt ...

  2. 用matlab对图像进行边缘填充,matlab中的图像边界填充函数 | 学步园

    padarray 功能:填充图像或填充数组. 用法:B = padarray(A,padsize,padval,direction) A为输入图像,B为填充后的图像, padsize给出了给出了填充的 ...

  3. OpenCV笔记-图像预处理1

    OpenCV笔记 一. 图像预处理 1. 图像显示与存储 1.1 颜色空间 颜色空间(RGB) 加法混色 三通道:RGB 一个像素的颜色值:(b,g,r) 取值范围:[0,255] or [0.0,1 ...

  4. OpenCV入门系列2:图像叠加、填充和腐蚀

    文章目录 前言 一.图像的叠加 1.1 叠加原理 1.2 叠加问题 1.3 问题解决 1.4 结果展示 二.图像的填充 2.1 填充方法介绍 2.2 复制法 2.3 轴对称法 2.4 中心对称法 2. ...

  5. 【OpenCV入门教程之十五】水漫金山:OpenCV漫水填充算法(Floodfill)

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/28261997 作者:毛星云(浅墨) ...

  6. OpenCV图像旋转,指定填充背景颜色边界颜色

    OpenCV图像旋转,指定填充背景颜色边界颜色 OpenCV与图像旋转有关的函数: (1)warpAffine函数 void cv::warpAffine ( InputArray  src,     ...

  7. 【OpenCV入门教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...

  8. 【OpenCV入门教程之三】 图像的载入,显示和输出 一站式完全解析

    [-] 一开胃菜之一  关于OpenCV的命名空间 二开胃菜之二  关于Mat类型 三图像的载入和显示 imread函数 namedWindow函数 imshow函数 四输出图像到文件imwrite函 ...

  9. python使用openCV图像加载(转化为灰度图像)、Canny边缘检测器检测图像的边缘(Detect Edges)

    python使用openCV图像加载(转化为灰度图像).Canny边缘检测器检测图像的边缘(Detect Edges) 目录

最新文章

  1. 让你热血沸腾的电竞直播,有一群深藏不露的技术极客
  2. JZOJ 5184. 【NOIP2017提高组模拟6.29】Gift
  3. leetcode 264. 丑数 II(堆)
  4. java lambda if_使用Java8的Lambda实现Monda -解道Jdon
  5. python参数传递方法_【python学习笔记】函数参数传递方法
  6. leecode-12整数转化为罗马数字C版
  7. Filecoin网络目前总质押量约为2930万枚FIL
  8. aspx页面,中文乱码解决方案
  9. 几个常见的 Socket 连接错误及原因
  10. PHP获取本月当月,起始结束日期
  11. golang 之时间国际化
  12. Java实现一个学生类Student
  13. ABAP 7.4 CORRESPONDING()语法
  14. oracle水仙花,希腊神话中的水仙花和回声
  15. 金融风控之贷款违约预测
  16. 《Patterns, Principles, and Pract》— chapter15 Value Objects
  17. vue重复点击路由报错,解决NavigationDuplicated: Avoided redundant navigation to current location: 问题
  18. 变分推断 | MATLAB实现VBMC变分贝叶斯蒙特卡洛模拟的贝叶斯推断
  19. Python 调试器 - ipdb
  20. AI的故事:半人马的诞生之路

热门文章

  1. 这些网络故障的处理手段,你都试过了吗
  2. Anuglar8集成高德地图
  3. JMeter元件详解之逻辑控制器
  4. 抓包工具fiddler
  5. 互联网经典SQL面试题及答案解析
  6. PHP代码审计18—PHP代码审计小结
  7. NTC,PT100热电阻转4-20mA温度信号转换器
  8. Kylin (四) --------- Kylin 4.0 查询引擎
  9. 免费高清视频素材下载网站
  10. 【高级篇 / HA】(6.0) ❀ 03. 通过命令切换 HA 主备 ❀ FortiGate 防火墙