OpenCV为图像添加边框

这篇具有很好参考价值的文章主要介绍了OpenCV为图像添加边框。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目标

在本教程中,您将学习如何:

  • 使用 OpenCV 函数 copyMakeBorder() 设置边框(为图像添加额外填充)。

理论

  • 注意

    下面的解释属于 Bradski 和 Kaehler 所著的《Learning OpenCV》一书。

  1. 在之前的教程中,我们学习了使用卷积对图像进行操作。自然而然出现的一个问题是如何处理边界。如果评估点位于图像的边缘,我们如何卷积它们?

  2. 大多数 OpenCV 函数所做的是将给定的图像复制到另一个稍大的图像上,然后自动填充边界(通过下面的示例代码中解释的任何方法)。这样,就可以毫无问题地在所需的像素上执行卷积(操作完成后会剪掉额外的填充)。

  3. 在本教程中,我们将简要探讨为图像定义额外填充(边框)的两种方法:

    1. BORDER_CONSTANT:用常量值(即黑色或\(0\))填充图像
    2. BORDER_REPLICATE:将原始文本最边缘的行或列复制到额外的边框。

    这将在“代码”部分中更清楚地看到。

  • 这个程序是做什么的?

    • 加载图像

    • 让用户选择在输入图像中使用哪种填充。有两个选项:

      1. 常量值边框:对整个边框应用常量值的填充。此值将每 0.5 秒随机更新一次。
      2. 复制的边框:边框将从原始图像边缘的像素值复制。

      用户通过按“c”(常量)或“r”(复制)来选择任一选项

    • 当用户按“ESC”时,程序结束

法典 C++爪哇岛蟒

教程代码如下所示。

您也可以从这里下载

#include“opencv2/imgproc.hpp”

#include“opencv2/imgcodecs.hpp”

#include “opencv2/highgui.hpp”

使用命名空间 CV;

声明变量

垫子 src, dst;

int 顶部、底部、左侧、右侧;

int borderType = BORDER_CONSTANT;

const char* window_name = “copyMakeBorder 演示”;

RNGrng(12345);

int main( int argc, char** argv )

{

​ const char* imageName = argc >=2 ?argv[1] : “莉娜.jpg”;

​ 加载图像

src = imread( samples::findFile( imageName ), IMREAD_COLOR );加载图片

​ 检查图像是否加载正常

​ if( src.空()) {

printf(“打开图像时出错\n”);

printf(“ 程序参数: [image_name – default lena.jpg] \n”);

​ 返回 -1;

​ }

​ 此程序的简要操作方法

printf( “\n \t copyMakeBorder 演示:\n” );

printf( “\t -------------------- \n” );

printf( “ ** 按 ‘c’ 将边框设置为随机常量值 \n”);

printf( “ ** 按 ‘r’ 设置要复制的边框 \n”);

printf( “ ** 按 ‘ESC’ 退出程序 \n”);

​ namedWindow( window_name, WINDOW_AUTOSIZE );

​ 初始化筛选器的参数

顶部 = (int) (0.05*src.行);底部 = 顶部;

左 = (int) (0.05*src.cols);右 = 左;

​ 为(;😉

​ {

​ 标量值( 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 );

​ 字符 c = (char)waitKey(500);

​ 如果( c == 27 )

​ { 破; }

​ 否则 if( c == ‘c’ )

{ borderType = BORDER_CONSTANT; }

​ 否则 if( c == ‘r’ )

{ borderType = BORDER_REPLICATE; }

​ }

​ 返回 0;

}

解释 C++爪哇岛蟒

声明变量

首先,我们声明我们将要使用的变量:

声明变量

垫子 src, dst;

int 顶部、底部、左侧、右侧;

int borderType = BORDER_CONSTANT;

const char* window_name = “copyMakeBorder 演示”;

RNGrng(12345);

特别值得一提的是变量 rng,它是一个随机数生成器。我们用它来生成随机边框颜色,我们很快就会看到。

加载图像

像往常一样,我们加载源图像 src

​ const char* imageName = argc >=2 ?argv[1] : “莉娜.jpg”;

​ 加载图像

src = imread( samples::findFile( imageName ), IMREAD_COLOR );加载图片

​ 检查图像是否加载正常

​ 如果( src.empty()) {

printf(“打开图像时出错\n”);

printf(“ 程序参数: [image_name – default lena.jpg] \n”);

​ 返回 -1;

​ }

创建窗口

在简要介绍如何使用该程序之后,我们创建一个窗口:

​ namedWindow( window_name, WINDOW_AUTOSIZE );

初始化参数

现在,我们初始化定义边框大小(顶部底部左侧右侧)的参数。我们给它们的值是 src 大小的 5%。

​ 初始化筛选器的参数

顶部 = (int) (0.05*src.rows);底部 = 顶部;

左 = (整数) (0.05*src.cols);右 = 左;

程序在无限循环中运行,而未按下 ESC 键。如果用户按“c”或“r”,borderType 变量将分别取值 BORDER_CONSTANTBORDER_REPLICATE

​ 字符 c = (char)waitKey(500);

​ 如果( c == 27 )

​ { 破; }

​ 否则 if( c == ‘c’ )

{ borderType = BORDER_CONSTANT; }

​ 否则 if( c == ‘r’ )

{ borderType = BORDER_REPLICATE; }

随机颜色

在每次迭代中(0.5 秒后),随机边框颜色()都会更新…

​ 标量值( rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255) );

此值是在 [0,255] 范围内随机选取的一组三个数字。[0,255]

在图像周围形成边框

最后,我们调用函数 copyMakeBorder() 来应用相应的填充:

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

  • 参数是:
    1. src:源图像
    2. dst:目标映像
    3. topbottomleftright:图像两侧边框的长度(以像素为单位)。我们将它们定义为图像原始大小的 5%。
    4. borderType:定义应用的边框类型。对于此示例,它可以是常量,也可以是复制的。
    5. value:如果 borderType BORDER_CONSTANT,则此值用于填充边框像素。
显示结果

我们在之前创建的图像中显示输出图像

​ imshow( window_name, dst );

结果

  1. 编译完上面的代码后,您可以执行它,并给出图像的路径作为参数。结果应为:

    • 默认情况下,它以设置为 BORDER_CONSTANT 的边框开头。因此,将显示一系列随机彩色边框。
    • 如果按“r”,边框将成为边缘像素的复制品。
    • 如果按“c”,随机彩色边框将再次出现
    • 如果按“ESC”,程序将退出。

    下面是一些屏幕截图,显示了边框如何更改颜色以及BORDER_REPLICATE选项的外观:

    OpenCV为图像添加边框,opencv,webpack,人工智能,计算机视觉

    在线教程

  • 麻省理工学院人工智能视频教程 – 麻省理工人工智能课程
  • 人工智能入门 – 人工智能基础学习。Peter Norvig举办的课程
  • EdX 人工智能 – 此课程讲授人工智能计算机系统设计的基本概念和技术。
  • 人工智能中的计划 – 计划是人工智能系统的基础部分之一。在这个课程中,你将会学习到让机器人执行一系列动作所需要的基本算法。
  • 机器人人工智能 – 这个课程将会教授你实现人工智能的基本方法,包括:概率推算,计划和搜索,本地化,跟踪和控制,全部都是围绕有关机器人设计。
  • 机器学习 – 有指导和无指导情况下的基本机器学习算法
  • 机器学习中的神经网络 – 智能神经网络上的算法和实践经验
  • 斯坦福统计学习
    有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
    OpenCV为图像添加边框,opencv,webpack,人工智能,计算机视觉

OpenCV为图像添加边框,opencv,webpack,人工智能,计算机视觉

人工智能书籍

  • OpenCV(中文版).(布拉德斯基等)
  • OpenCV+3计算机视觉++Python语言实现+第二版
  • OpenCV3编程入门 毛星云编著
  • 数字图像处理_第三版
  • 人工智能:一种现代的方法
  • 深度学习面试宝典
  • 深度学习之PyTorch物体检测实战
  • 吴恩达DeepLearning.ai中文版笔记
  • 计算机视觉中的多视图几何
  • PyTorch-官方推荐教程-英文版
  • 《神经网络与深度学习》(邱锡鹏-20191121)

  • OpenCV为图像添加边框,opencv,webpack,人工智能,计算机视觉

第一阶段:零基础入门(3-6个月)

新手应首先通过少而精的学习,看到全景图,建立大局观。 通过完成小实验,建立信心,才能避免“从入门到放弃”的尴尬。因此,第一阶段只推荐4本最必要的书(而且这些书到了第二、三阶段也能继续用),入门以后,在后续学习中再“哪里不会补哪里”即可。

OpenCV为图像添加边框,opencv,webpack,人工智能,计算机视觉

第二阶段:基础进阶(3-6个月)

熟读《机器学习算法的数学解析与Python实现》并动手实践后,你已经对机器学习有了基本的了解,不再是小白了。这时可以开始触类旁通,学习热门技术,加强实践水平。在深入学习的同时,也可以探索自己感兴趣的方向,为求职面试打好基础。

OpenCV为图像添加边框,opencv,webpack,人工智能,计算机视觉

第三阶段:工作应用

OpenCV为图像添加边框,opencv,webpack,人工智能,计算机视觉

这一阶段你已经不再需要引导,只需要一些推荐书目。如果你从入门时就确认了未来的工作方向,可以在第二阶段就提前阅读相关入门书籍(对应“商业落地五大方向”中的前两本),然后再“哪里不会补哪里”。

有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
OpenCV为图像添加边框,opencv,webpack,人工智能,计算机视觉

OpenCV为图像添加边框,opencv,webpack,人工智能,计算机视觉

OpenCV为图像添加边框,opencv,webpack,人工智能,计算机视觉文章来源地址https://www.toymoban.com/news/detail-834424.html

到了这里,关于OpenCV为图像添加边框的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 人工智能算法工程师面试题——之OpenCV必背汇总(四)

    在OpenCV中,图像融合通常指的是将两个或更多图像以某种方式组合在一起,以创建一个新的图像。这个过程可以用于多种目的,比如艺术效果、图像修复或信息增强。实现图像融合的一种常见方法是通过加权求和,也就是每个像素位置上将不同图像的像素值按照一定的权重相

    2024年02月21日
    浏览(48)
  • 【OpenCV】学习课-图像添加文字(3)!

    cv2.putText(img1, text, pos, font, fontScale, color) ##添加文字 参数 img1:绘制文本的图像 text:要绘制的文本字符串 pos:绘制的图片位置 font:字体类型 fontScale:字体比例因子乘以font-specific基本大小 color:颜色 输出:  该函数并不能添加中文字体,那我们来看下怎么添加中文文字。

    2024年02月04日
    浏览(38)
  • python使用opencv对图像添加(高斯/椒盐/泊松/斑点)噪声

    导读 这篇文章主要介绍如何利用opencv来对图像添加各类噪声,原图 高斯噪声 高斯噪声就是给图片添加一个服从 高斯分布的噪声 ,可以通过调节高斯分布 标准差(sigma) 的大小来控制添加噪声程度, sigma 越大添加的噪声越多图片损坏的越厉害 椒盐噪声 椒盐噪声就是给图片添

    2024年02月15日
    浏览(55)
  • Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之十一 简单给视频添加水印图片效果

    目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之十一 简单给视频添加水印图片效果 一、简单介绍 二、简单给视频添加水印图片效果实现原理 三、简单给视频添加水印图片效果案例实现简单步骤 四、注意事项 Python是一种跨平台的计算机程序设计语

    2024年04月25日
    浏览(69)
  • 详解cv2.addWeighted函数【使用 OpenCV 添加(混合)两个图像-Python版本】

    有的时候我们需要将两张图片在alpha通道进行混合,比如深度学习数据集增强方式MixUp。OpenCV的 addWeighted 提供了相关操作,此篇博客将详细介绍这个函数,并给出代码示例。🚀🚀 o u t p u t I m g = s a t u r a t e ( α ∗ i n p u t I m g 1 + β ∗ i n p u t I m g 2 + γ ) rm outputImg=saturate( al

    2024年02月06日
    浏览(92)
  • 【OpenCV】图像上绘制文字cv2.putText()函数用法,添加倾斜透明水印

    在OpenCV中,调用cv2.putText()函数可添加文字到指定位置,对于需要在图片中加入文字的场景提供了一种比较直接方便的方式。 注意:OpenCV 不支持显示中文字符,使用 cv2.putText() 时添加的文本字符串不能包含中文字符(包括中文标点符号) 其函数原型如下所示: 上述参数分别

    2024年02月04日
    浏览(56)
  • Android App开发超实用实例 | OpenCV在Android手机实现在图像上添加文本

     OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,它可以运行在Linux、Windows、Android和Mac OS等操作系统上。OpenCV原本由一系列 C 函数和少量 C++ 类构成,同时提供了Python等其他语言的接口,它实现了图像处理和计算机视觉方面的很多通用算法。下面这个实例演示了使用

    2024年02月03日
    浏览(48)
  • C++ 程序使用 OpenCV 生成两个黑色的灰度图像,并添加随机特征点,然后将这两个图像合并为一张图像并显示

    生成灰度图像 :程序创建了两个大小为 240x320 像素的黑色灰度图像,分别命名为 imLeft 和 imRight 。 生成随机特征点 : 使用 generateRandomKeyPoints 函数在这两个图像上生成指定数量(在这个例子中是100个)的随机特征点。 这些特征点存储在 std::vectorcv::KeyPoint 类型的 mvKeys 和 mvK

    2024年02月20日
    浏览(37)
  • Python Opencv 图片识别表格:边框线检测

    Python数据开发工作需求对图片做边框线检查和图片中的直线,非常实用建议收藏 下面需要用模块,先安装一下: 该示例代码使用边缘检测和霍夫变换提取图片中的直线,然后根据直线数量来判断是否有表格。这只是一个简单的示例,具体的判断方法和算法需要根据具体情况

    2024年02月16日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包