一、赋值
赋值操作是将一个cv::Mat对象的数据复制到另一个对象中。赋值操作使用的是浅拷贝(shallow copy),即两个对象共享相同的数据内存。这意味着对一个对象的修改会影响到另一个对象
cv::Mat src = cv::imread("image.jpg"); // 加载图像
cv::Mat dst;
dst = src; // 执行赋值操作,将src的数据复制到dst
二、克隆
克隆操作是创建一个新的cv::Mat对象,并复制源对象的数据到新对象中。克隆操作使用的是深拷贝(deep copy),即两个对象具有独立的数据内存。这意味着对一个对象的修改不会影响到另一个对象
cv::Mat src = cv::imread("image.jpg"); // 加载图像
cv::Mat clone = src.clone(); // 克隆操作,创建一个新的对象并复制数据
三、拷贝
OpenCV中,cv::Mat类提供了copyTo函数,用于将一个cv::Mat对象的数据复制到另一个对象中,并且可以对数据进行一些转换或处理
void cv::Mat::copyTo(OutputArray dst) const;
void cv::Mat::copyTo(OutputArray dst, InputArray mask) const;
copyTo函数的行为如下:
- 如果目标dst对象与源对象具有相同的大小和类型,则直接将源对象的数据复制到目标对象中。
- 如果目标dst对象与源对象的大小或类型不匹配,则会重新分配目标对象的内存,并将源对象的数据复制到目标对象中。
- 如果提供了掩码mask,则只有满足掩码条件的源数据才会被复制到目标对象中,不满足掩码条件的数据将被忽略。
四、初始化
在OpenCV中,cv::Mat类提供了两个函数cv::Mat::ones和cv::Mat::zeros,用于创建指定大小和类型的全零或全一的矩阵文章来源:https://www.toymoban.com/news/detail-638882.html
- cv::Mat::ones函数用于创建一个大小为rows x cols的矩阵,并且所有元素的值都设置为1
rows和cols是矩阵的行数和列数,type是矩阵的数据类型。常用的数据类型包括CV_8U(8位无符号整数)、CV_32F(32位浮点数)等
cv::Mat cv::Mat::ones(int rows, int cols, int type);
//rows和cols是矩阵的行数和列数,type是矩阵的数据类型。常用的数据类型包括CV_8U(8位无符号整数)、CV_32F(32位浮点数)等
cv::Mat onesMat = cv::Mat::ones(3, 3, CV_32F);
//onesMat是一个大小为3x3的矩阵,所有元素的值都设置为1
- cv::Mat::zeros函数用于创建一个大小为rows x cols的矩阵,并且所有元素的值都设置为0
cv::Mat cv::Mat::zeros(int rows, int cols, int type);
//其中,rows和cols是矩阵的行数和列数,type是矩阵的数据类型
cv::Mat zerosMat = cv::Mat::zeros(3, 3, CV_8U);
//zerosMat是一个大小为3x3的矩阵,所有元素的值都设置为0
推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:
零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)
https://xxetb.xet.tech/s/VsFMs文章来源地址https://www.toymoban.com/news/detail-638882.html
到了这里,关于openCV 图像对象的创建和赋值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!