目录

1原理

2 代码

3 运行结果


1原理

  1. 前一节我们学习了图像的卷积操作。一个很自然的问题是如何处理卷积边缘。当卷积点在图像边界时会发生什么,如何处理这个问题?

  2. 大多数用到卷积操作的OpenCV函数都是将给定图像拷贝到另一个轻微变大的图像中,然后自动填充图像边界(通过下面示例代码中的各种方式)。这样卷积操作就可以在边界像素安全执行了(填充边界在操作完成后会自动删除)。

  3. 本文档将会探讨填充图像边界的两种方法:

    1. BORDER_CONSTANT: 使用常数填充边界 (i.e. 黑色或者 )

    2. BORDER_REPLICATE: 复制原图中最临近的行或者列。

  1. 本程序做什么?

    • 装载图像

    • 由用户决定使用哪种填充方式。有两个选项:

      1. 常数边界: 所有新增边界像素使用一个常数,程序每0.5秒会产生一个随机数更新该常数值。

      2. 复制边界: 复制原图像的边界像素。

      用户可以选择按 ‘c’ 键 (常数边界) 或者 ‘r’ 键 (复制边界)

    • 当用户按 ‘ESC’ 键,程序退出。

  2. 下面是本教程的源码, 你也可以从 这里 下载

2 代码

#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdlib.h>
#include <stdio.h>
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdlib.h>
#include <stdio.h>
​
using namespace cv;
//src = imread("C:\\Users\\guoqi\\Desktop\\ch7\\4.jpg", 1);
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdlib.h>
#include <stdio.h>
​
using namespace cv;
​
/// 全局变量
Mat src, dst;
int top, bottom, left, right;
int borderType;
Scalar value;
char* window_name = "copyMakeBorder Demo";
RNG rng(12345);
​
/** @函数 main  */
int main(int argc, char** argv)
{
​int c;
​/// 装载图像src = imread("C:\\Users\\guoqi\\Desktop\\ch7\\4.jpg", 1);
​if (!src.data){return -1;printf(" No data entered, please enter the path to an image file \n");}
​/// 使用说明printf("\n \t copyMakeBorder Demo: \n");printf("\t -------------------- \n");printf(" ** Press 'c' to set the border to a random constant value \n");printf(" ** Press 'r' to set the border to be replicated \n");printf(" ** Press 'ESC' to exit the program \n");
​/// 创建显示窗口namedWindow(window_name, CV_WINDOW_AUTOSIZE);
​/// 初始化输入参数top = (int)(0.05*src.rows); bottom = (int)(0.05*src.rows);left = (int)(0.05*src.cols); right = (int)(0.05*src.cols);dst = src;
​imshow(window_name, dst);
​while (true){c = waitKey(500);
​if ((char)c == 27){break;}else if ((char)c == 'c'){borderType = BORDER_CONSTANT;}else if ((char)c == 'r'){borderType = BORDER_REPLICATE;}
​value = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));copyMakeBorder(src, dst, top, bottom, left, right, borderType, value);
​imshow(window_name, dst);}
​return 0;
}

3 运行结果

OpenCV 【二十】给图像添加边界相关推荐

  1. python opencv二值化图像_python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘...

    python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘 python opencv 1,读取图像 2,图像变矩阵 3,图像转灰度图像 4,彩色图像是3D数组 5,灰度图像是2 ...

  2. OpenCV二值化图像像素操作

    二值化图像像素不是0就是255,数据类型为uchar.所以访问方法是: // 这里inputmat是二值化图像的mat inputmat.at<uchar>(y, x); 判断是否为白色的 ...

  3. OpenCV图像处理学习二十,图像直方图均衡化原理与实现

    一.图像直方图的概念 图像直方图,是指对整个图像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称为图像直方图.直方图反映了图像灰度的分布情况,是图像的统计学特征.图像的灰度直方 ...

  4. [Python图像处理] 二十五.图像特效处理之素描、怀旧、光照、流年以及滤镜特效

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  5. [Python图像处理] 二十四.图像特效处理之毛玻璃、浮雕和油漆特效

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  6. Keras基础自学二十(图像旋转,图像剪切,图像移动)

    from keras.datasets import mnist from keras.preprocessing.image import ImageDataGenerator from matpl ...

  7. PPT基础(二十九)添加备注和批注

    添加备注: PPT低版本中的操作: 在PPT中,点击视图选项卡,点击左侧备注页 在备注页下方的文本框中输入备注内容 在视图选项卡中,点击左侧普通,回到PPT普通视图状态 PPT高版本中的操作: 在PP ...

  8. OpenCV学习笔记(十)——图像卷积(cv.filter2D()、矩阵旋转cv.filp())

    目录 1 图像卷积过程 2 cv.filter2D() 3 cv.filp() 卷积运算在信号处理中十分常见,而图像信息可以看成一种信号.例如,图像的每一行可以看出测量亮度变化的信号,而每一列可以看作 ...

  9. OpenCV图像处理(十二)---图像阈值化

    如果两个热力学系统中的每一个都与第三个热力学系统处于热平衡(温度相同),则它们彼此也必定处于热平衡.这一结论称做"热力学第零定律".又称热平衡定律,是热力学的四条基本定律之一,是一 ...

最新文章

  1. 第五篇:协调和协定之选举算法
  2. centos普通用户SSH免密登录
  3. Heinz College of Information Systems and Public Policy Carnegie Mellon University
  4. Android和IOS 调用 支付宝和微信 支付方法
  5. 使用nextInt()等接受输入时必须注意换行符的输入
  6. 什么牌子的平板电脑好_台式电脑哪个牌子好
  7. Generate a String CodeForces - 710E(dp)
  8. tp 数据库查询排序_怎么进行数据库分库分表?
  9. JavaEE基础(02):Servlet核心API用法详解
  10. 线上故障快速定位及恢复
  11. 数据库运维家中常备:上限约400MB/s,比COPY等工具还好用的数据利器
  12. wsl 重启_WSL(Windows Subsystem for Linux) 安装教程
  13. 4399小游戏flash插件怎么下载_Flash即将关闭,但这个小游戏平台,或许可以帮你找回4399的回忆...
  14. 【BZOJ1085】迭代加深+启发式搜索
  15. 实战:小程序购物商城
  16. html倒计时样式,简单实现JS倒计时效果
  17. python读取excel(xlrd)
  18. MapReduce:出租车数据案例
  19. Qt 实现 QQ 截图工具(开源OEasyScreenshot)
  20. WPS如何设置快捷键|为设置颜色添加快捷键

热门文章

  1. html链接伪类设置鼠标悬停,链接伪类可以控制超链接的样式吗?是怎样实现的?...
  2. 三星 arm9 linux,基于arm9内核三星s3c2410平台下linux四键按键驱动程序
  3. python数据分析实训大纲,数据分析大赛考纲:(二)Python数据分析应会部分
  4. java单元测试启动类配置_Springboot 单元测试简单介绍和启动所有测试类的方法
  5. http 错误 404.0 - not found_python3从零学习-5.10.8、http.client—HTTP 协议客户端
  6. 卷积神经网络基础:(6)卷积神经网络原理
  7. autoware中的交通灯识别(八)
  8. autoware定位:gnss定位与lidar定位(四)
  9. 【opencv】(13) 案例:停车场空余车位检测,附python完整代码
  10. C++随时输出到文件-outfile