OpenCV实现给图片添加边框功能

目标:

基于OpenCV的函数cv::copyMakeBorder给图像添加边框

函数简介:

copyMakeBorder( src, dst, top, bottom, left, right, borderType, value );

参数:

src: 原图像
dst: 目标图像
top, bottom, left, right: 每一个边界方向上像素的宽度.在这里使用图像原始大小的 5% .
borderType:边框的类型 。当前例子中位纯色或者边界的复制.
value: 如果borderType 设置位 BORDER_CONSTANT, 这个将作为边框的颜色.

边框的类型

1)纯色边框

BORDER_CONSTANT,边框设置位某种单一的颜色,比如黑色

2)图像边界扩展

BORDER_REPLICATE,复制原图的边界进行扩展

代码

/**
 * @file copyMakeBorder_demo.cpp
 * @brief Sample code that shows the functionality of copyMakeBorder
 * @author OpenCV team
 */

#include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"

using namespace cv;

//![variables]
Mat src, dst;
int top, bottom, left, right;
int borderType;
const char* window_name = "copyMakeBorder Demo";
RNG rng(12345);
//![variables]

/**
 * @function main
 */
int main( int, char** argv )
{

 int c;

 //![load]
 src = imread( argv[1], IMREAD_COLOR ); // Load an image

 if( src.empty() )
 {
  printf(" No data entered, please enter the path to an image file \n");
  return -1;
 }
 //![load]

 /// Brief how-to for this program
 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");

 //![create_window]
 namedWindow( window_name, WINDOW_AUTOSIZE );
 //![create_window]

 //![init_arguments]
 /// Initialize arguments for the filter
 top = (int) (0.05*src.rows); bottom = (int) (0.05*src.rows);
 left = (int) (0.05*src.cols); right = (int) (0.05*src.cols);
 //![init_arguments]

 dst = src;
 imshow( window_name, dst );

 for(;;)
  {
   //![check_keypress]
   c = waitKey(500);

   if( (char)c == 27 )
   { break; }
   else if( (char)c == 'c' )
   { borderType = BORDER_CONSTANT; }
   else if( (char)c == 'r' )
   { borderType = BORDER_REPLICATE; }
   //![check_keypress]

   //![update_value]
   Scalar value( rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255) );
   //![update_value]

   //![copymakeborder]
   copyMakeBorder( src, dst, top, bottom, left, right, borderType, value );
   //![copymakeborder]

   //![display]
   imshow( window_name, dst );
   //![display]
  }

 return 0;
}

效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Opencv图像处理之图像增加边框

    理论 在本教程中,我们将简要介绍两种为图像定义额外填充(边框)的方法: BORDER_CONSTANT:用恒定值(即黑色或0)填充图像 BORDER_REPLICATE:原始边缘的行或列复制到额外边框. 代码 程序的运行流程 加载一张图片 让用户选择输入图像中使用哪种填充. 有两种选择: 1.常量值边框:为整个边框应用常量值的填充. 该值将每0.5秒随机更新一次. 2.复制边框:将从原始图像边缘的像素值复制边框. 当用户按下'ESC'时程序结束 原始代码 #include "opencv2/im

  • OpenCV实现给图片添加边框功能

    目标: 基于OpenCV的函数cv::copyMakeBorder给图像添加边框 函数简介: copyMakeBorder( src, dst, top, bottom, left, right, borderType, value ); 参数: src: 原图像 dst: 目标图像 top, bottom, left, right: 每一个边界方向上像素的宽度.在这里使用图像原始大小的 5% . borderType:边框的类型 .当前例子中位纯色或者边界的复制. value: 如果borde

  • JS实现动态给图片添加边框的方法

    本文实例讲述了JS实现动态给图片添加边框的方法.分享给大家供大家参考.具体如下: 下面的JS代码设置图片的边框为2个像素,即border=2 <!DOCTYPE html> <html> <head> <script> function addBorder() { document.getElementById("compman").border="2"; } </script> </head>

  • OpenCV自动给图片添加彩虹特效的实现示例

    目录 背景介绍  实现步骤 [1]准备一张夏季风景图片,加载读取 [2]创建一张与原图同样大小的黑图,然后通过画椭圆函数绘制彩虹 [3]高斯模糊,让彩虹边缘更柔和过渡 [4]彩虹图像与风景图混合叠加(使用泊松融合效果更佳) 背景介绍 南方的冬季总是淅淅沥沥下着小雨,晴天渐渐成为奢望.此时,我多么希望感受一下夏季的温暖,哪怕是雨天,偶尔还会看到彩虹!想到这便动起手来,找找夏季的照片和视频,用OpenCV给它们加上漫天彩虹.  实现步骤 [1]准备一张夏季风景图片,加载读取 Mat src = im

  • 菜鸟也能当PS高手!PhotoWorks为你的图片添加漂亮的边框(教程+下载)

    是否看过别人的网站或贴图上的图片有那么一个漂亮的边框,使整张图片都美观了?他们是怎么做到的? 给图片加边框对于PS高手来说是小菜一碟而已,但对于大多数的一般的朋友来说是一件很难的事情,为了这个去学PhotoShop,很多人都不愿意的,但是,现在你不会PS也不用羡慕别人了,如果你有了今天的主角--PhotoWORKS,你也能轻易的做出相框效果来,因为一切都是那么的容易! 这款软件是一款傻瓜式的图片加边框软件,是韩国人写的,www.x-force.cn大概有近200多种边框可供选择,而且可以添加文字

  • jquery给图片添加鼠标经过时的边框效果

    一哥们儿要给图片添加鼠标经过时的边框效果,可惜出发点错了,直接加在了IMG外的A标签上致使 鼠标经过时图片产生塌陷,实则应该将边框控制直接加在IMG标签上即可 错误代码如下:注意红色部分设置 (出发点就错了) 复制代码 代码如下: <html> <head> <script type="text/javascript" src="http://www.w3school.com.cn/jquery/jquery.js"></s

  • OpenCV实现更改图片颜色功能

    原图效果: 更改颜色后效果: 直接上源码: #include <opencv2/opencv.hpp> #include <iostream> #include <vector> #include <cstdio> #include <cstring> using namespace cv; using namespace std; int main(int argc, char const* argv[]) { Mat srcImg = imr

  • Python OpenCV实现测量图片物体宽度

    一. 题目描述 测量所给图片的高度,即上下边缘间的距离. 思路: 将图片进行阈值操作得到二值化图片. 截取只包含上下边框的部分,以便于后续的轮廓提取 轮廓检测 得到结果 二. 实现过程 1.用于给图片添加中文字符 #用于给图片添加中文字符 def ImgText_CN(img, text, left, top, textColor=(0, 255, 0), textSize=20): if (isinstance(img, np.ndarray)): #判断是否为OpenCV图片类型 img =

  • Python OpenCV 调用摄像头并截图保存功能的实现代码

    0x01 OpenCV安装 通过命令pip install opencv-python 安装 pip install opencv-python 0x02  示例 import cv2 cap = cv2.VideoCapture(0) #打开摄像头 while(1): # get a frame ret, frame = cap.read() # show a frame cv2.imshow("capture", frame) #生成摄像头窗口 if cv2.waitKey(1)

  • python opencv如何实现图片绘制

    这篇文章主要介绍了python opencv如何实现图片绘制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 点和圆 : circle(img,center,radius,color,thickness=None,lineType=None,shift=None).各参数意义及作用如下. img:待画圆所在的图像. center:待画圆的圆心坐标. radius:待画圆的半径. color:待画圆的边框颜色,颜色格式为bgr格式.就是通道值 th

  • Opencv创建车牌图片识别系统方法详解

    目录 前言 包含功能 软件版本 软件架构 参考文档 效果图展示 车牌检测过程 图片车牌文字识别过程 部分核心代码 前言 这是一个基于spring boot + maven + opencv 实现的图像识别及训练的Demo项目 包含车牌识别.人脸识别等功能,贯穿样本处理.模型训练.图像处理.对象检测.对象识别等技术点 java语言的深度学习项目,在整个开源社区来说都相对较少: 拥有完整的训练过程.检测.识别过程的开源项目更是少之又少!! 包含功能 蓝.绿.黄车牌检测及车牌号码识别 网上常见的轮廓提

随机推荐