OpenCV入门 图像的边缘填充与融合
总结:
图像的基本概念:
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入门 图像的边缘填充与融合相关推荐
- opencv 利用图像轮廓函数填充圆环内部 图像轮廓函数应用小例子
实验: import cv2 as cv import numpy as np# 1.读入圆环 img = cv.imread('circle_ring.jpg') img_gray = cv.cvt ...
- 用matlab对图像进行边缘填充,matlab中的图像边界填充函数 | 学步园
padarray 功能:填充图像或填充数组. 用法:B = padarray(A,padsize,padval,direction) A为输入图像,B为填充后的图像, padsize给出了给出了填充的 ...
- OpenCV笔记-图像预处理1
OpenCV笔记 一. 图像预处理 1. 图像显示与存储 1.1 颜色空间 颜色空间(RGB) 加法混色 三通道:RGB 一个像素的颜色值:(b,g,r) 取值范围:[0,255] or [0.0,1 ...
- OpenCV入门系列2:图像叠加、填充和腐蚀
文章目录 前言 一.图像的叠加 1.1 叠加原理 1.2 叠加问题 1.3 问题解决 1.4 结果展示 二.图像的填充 2.1 填充方法介绍 2.2 复制法 2.3 轴对称法 2.4 中心对称法 2. ...
- 【OpenCV入门教程之十五】水漫金山:OpenCV漫水填充算法(Floodfill)
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/28261997 作者:毛星云(浅墨) ...
- OpenCV图像旋转,指定填充背景颜色边界颜色
OpenCV图像旋转,指定填充背景颜色边界颜色 OpenCV与图像旋转有关的函数: (1)warpAffine函数 void cv::warpAffine ( InputArray src, ...
- 【OpenCV入门教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...
- 【OpenCV入门教程之三】 图像的载入,显示和输出 一站式完全解析
[-] 一开胃菜之一 关于OpenCV的命名空间 二开胃菜之二 关于Mat类型 三图像的载入和显示 imread函数 namedWindow函数 imshow函数 四输出图像到文件imwrite函 ...
- python使用openCV图像加载(转化为灰度图像)、Canny边缘检测器检测图像的边缘(Detect Edges)
python使用openCV图像加载(转化为灰度图像).Canny边缘检测器检测图像的边缘(Detect Edges) 目录
最新文章
- 让你热血沸腾的电竞直播,有一群深藏不露的技术极客
- JZOJ 5184. 【NOIP2017提高组模拟6.29】Gift
- leetcode 264. 丑数 II(堆)
- java lambda if_使用Java8的Lambda实现Monda -解道Jdon
- python参数传递方法_【python学习笔记】函数参数传递方法
- leecode-12整数转化为罗马数字C版
- Filecoin网络目前总质押量约为2930万枚FIL
- aspx页面,中文乱码解决方案
- 几个常见的 Socket 连接错误及原因
- PHP获取本月当月,起始结束日期
- golang 之时间国际化
- Java实现一个学生类Student
- ABAP 7.4 CORRESPONDING()语法
- oracle水仙花,希腊神话中的水仙花和回声
- 金融风控之贷款违约预测
- 《Patterns, Principles, and Pract》— chapter15 Value Objects
- vue重复点击路由报错,解决NavigationDuplicated: Avoided redundant navigation to current location: 问题
- 变分推断 | MATLAB实现VBMC变分贝叶斯蒙特卡洛模拟的贝叶斯推断
- Python 调试器 - ipdb
- AI的故事:半人马的诞生之路