[C++] opencv - copyTo函数介绍和使用案例

这篇具有很好参考价值的文章主要介绍了[C++] opencv - copyTo函数介绍和使用案例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

copyTo函数介绍

copyTo函数是OpenCV库中的一个成员函数,用于将一个Mat对象的内容复制到另一个Mat对象中。

函数原型:

void cv::Mat::copyTo(OutputArray m) const;

void cv::Mat::copyTo(OutputArray m, InputArray mask) const;

参数说明:

  • m: 输出数组,即目标Mat对象,用于存储源Mat对象的内容。
  • mask: 图像掩膜,用选定的图像作为遮挡,来控制图像处理的区域;

使用案例

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
    // 读取一张图片
    Mat src = imread("D:/LocalTest/images/beauty_01.jpg");
    if (src.empty())
    {
        cout << "无法读取图片" << endl;
        return -1;
    }

    // 创建一个新的Mat对象,大小为src的2倍,并用黑色来填充,用于存储复制后的内容
    // 这里需要注意的是,opencv中Mat对象第一个参数为rows,也就是高,第二个参数是cols,也就是宽,和我们平时说的宽x高相反
    Mat dst = Mat(src.rows, src.cols * 2 , src.type(), Scalar(0, 0, 0));

    // 将src的内容复制到dst制定的区域,相当于对src进行了水平复制
    // 这里使用了dst(roi)的方式进行拷贝
    // roi的定义调用了Mat类的赋值运算符,Mat类中的拷贝构造函数和赋值运算符定义的新Mat对象,都属于浅拷贝,即只为新构造的对象创建新的矩阵头,并将矩阵指针指向对其进行赋值或拷贝的Mat对象像素值存储的位置。也就是说,这种形式新定义的Mat对象,它的像素值和旧Mat对象的像素值,其实是一个矩阵的值,所以对新对象的像素值进行修改,旧的对象的像素值也会变化。
    src.copyTo(dst(Rect(0, 0, src.cols, src.rows))); 

    // 使用mask来控制只复制比较亮的部分
    src.copyTo(dst(Rect(src.cols, 0 , src.cols, src.rows)), src > 128 );

    // 显示原始图片和复制后的图片
    imshow("原始图片", src);
    imshow("复制后的图片", dst);

    // 等待按键,关闭窗口
    waitKey(0);
    destroyAllWindows();

    return 0;
}

在这个例子中,我们首先读取了一张名为"beauty_01.jpg"的图片,并将其内容存储在名为src的Mat对象中。然后,我们创建了一个新的Mat对象dst,并使用copyTo函数将src的内容复制到dst中。最后,我们分别显示了原始图片和复制后的图片。

[C++] opencv - copyTo函数介绍和使用案例,opencv,C++,opencv,c++

[C++] opencv - copyTo函数介绍和使用案例,opencv,C++,opencv,c++文章来源地址https://www.toymoban.com/news/detail-802523.html

到了这里,关于[C++] opencv - copyTo函数介绍和使用案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Opencv中inRange函数使用介绍

    inRange是OpenCV中的图像阈值函数,用于将图像中的像素值限制在指定的范围内。它的输入和输出如下所述: 输入值: src:输入图像,可以是灰度图像或彩色图像。 lowerb:表示下界的阈值,可以是一个标量值或与输入图像通道数相同的数组。对于灰度图像,lowerb是一个标量值。

    2024年02月05日
    浏览(39)
  • [C++] opencv - imwrite函数介绍和使用场景

    OpenCV 是一个开源的计算机视觉库,它包含了许多用于图像处理和计算机视觉任务的函数。其中,imsave() 函数是 OpenCV 中的一个非常有用的函数,它可以让程序将处理后的图像数据保存到指定的文件中。 使用 imwrite() 函数可以将处理后的图像数据保存到本地文件系统中。例如,

    2024年02月04日
    浏览(31)
  • [C++] opencv - cvtColor函数介绍和使用场景

    OpenCV是一个开源的计算机视觉库,提供了许多图像处理和计算机视觉方面的功能。其中,cvtColor函数是OpenCV中非常重要的一个函数,用于将一种颜色空间的图像转换为另一种颜色空间的图像。本文将介绍cvtColor函数的相关知识,包括函数的介绍、函数原型和参数说明、函数使用

    2024年02月02日
    浏览(29)
  • [C++] opencv - drawContours(绘制轮廓)函数介绍和使用场景

    OpenCV中的drawContours函数用于在图像上绘制轮廓。其函数原型如下: 比较复制插入新建 参数说明: image: 输出图像,即绘制轮廓后的图像。 contours: 轮廓集合,每个轮廓由一系列点组成。 contourIdx: 轮廓索引数组,指定要绘制哪些轮廓。如果为NULL,则绘制所有轮廓。 contourC

    2024年01月19日
    浏览(38)
  • [C++] opencv - Mat::convertTo函数介绍和使用场景

    Converts an array to another data type with optional scaling.    该函数主要用于数据类型的相互转换。 The method converts source pixel values to the target data type. saturate_cast is applied at the end to avoid possible overflows: m(x,y)=saturate_castrtype(α(∗this)(x,y)+β)    这是函数底层算法实现公式,了解算法方便我们

    2024年01月18日
    浏览(39)
  • 使用OpenCV的cv2.imread函数读取图像介绍

    在计算机视觉和图像处理应用中,读取图像是一个常见的操作。OpenCV是一个广泛使用的图像处理库,它提供了 cv2.imread 函数,用于读取图像。本文将详细介绍如何使用 cv2.imread 函数,包括参数和用法。 首先,确保你已经安装了OpenCV库。你可以使用以下命令来安装OpenCV(如果尚

    2024年02月05日
    浏览(44)
  • 【opencv】颜色映射表操作-applyColorMap()和LUT()函数使用介绍

    来自:ColorMaps in OpenCV。 人眼对颜色的变化更敏感,所以当一张灰度图的细微变化不是很明显时,可以对灰度图重新着色。 opencv提供函数 applyColorMap() 实现这种功能。其内部算法基本是查表法LUT实现,首先构建查找表,然后应用查找表。应用表的过程类似: d s t ( i , j ) = L U

    2024年02月11日
    浏览(30)
  • [C++] opencv - HoughCircles(霍夫圆查找)函数介绍和使用场景

    HoughCircles函数用于在灰度图像中使用霍夫变换查找圆。 该函数通过修改霍夫变换来实现,通常可以很好地检测出圆的中心,但可能无法找到正确的半径。可以通过指定半径范围(minRadius和maxRadius)来协助该函数,或者在#HOUGH_GRADIENT方法中将maxRadius设置为负数以仅返回圆心而不进

    2024年02月03日
    浏览(30)
  • [C++] opencv - approxPolyDP(多边形拟合)函数介绍和使用场景

    OpenCV中的 approxPolyDP() 函数用于对形状进行逼近,以减少多边形的顶点数,可以用于对图像轮廓点进行多边形拟合。 函数原型如下: 其中, curve 是输入的点集,类型为 InputArray, 可以是 Mat 、 vectorPoint 等; approxCurve是输出的点集,类型为 OutputArray, 也是 Mat 类型; epsilon 是精

    2024年03月14日
    浏览(43)
  • [C++] opencv - fillPoly(填充多边形)函数介绍和使用场景

    fillPoly() 函数是OpenCV中用于绘制填充多边形的函数。函数原型如下: fillPoly() 函数适用于需要绘制填充多边形的场景,例如在图像上绘制一个封闭的图形、制作一个简单的遮罩等。   fillPoly() 函数是OpenCV中用于绘制填充多边形的函数。可以用来绘制实心三角形,实心矩形,实

    2024年02月19日
    浏览(32)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包