一、The cv::Mat Class: N-Dimensional Dense Arrays
1.1 Creating an Array
1.1 Creating an Array
Mat m;
m.create(3, 10, CV_32FC3);
m.setTo(Scalar(100.0f, 100.0f, 100.0f));
Mat n(3, 10, CV_32FC3, Scalar(100.0f, 100.0f, 100.0f));以上两种创建方式是一样的。
Mat constructors that do not copy data

Mat constructors that copy data from other cv::Mats

Mat img, src,src1,src2;
img = imread("D:\\cv_study\\随机练\\gun.jpg");
src = img.clone();
src1=img(Range(100, 400), Range(100, 400));
src2 = img(Rect(100, 100, 300, 300));
以上是几种常用的抠图方式。
1.2 Accessing Array Elements Individually
Mat img, src,src1,src2;
img = imread("D:\\cv_study\\随机练\\gun.jpg");
Mat m(3, 10, CV_32FC3, Scalar(100.0f, 100.0f, 100.0f));
cout << img.at<Vec2f>(0, 3)[0] << endl;
cout << m.at<Vec3f>(0, 3)[1] << endl;
cout << m.at<Vec3f>(0, 3)[2] << endl;以上是访问像素点的方法之一。

1.3 Accessing Array Elements by Block
有些时候,需要访问某一行,某一列或者某几行几列,这时候就需要用到下面的几个函数了。

1.4 More Things an Array Can Do

Mat img,m0,m1,m2;
img = imread("D:\\cv_study\\随机练\\gun.jpg");
img.convertTo(m0, CV_32FC1);
Mat mask = Mat::ones(img.size(), img.type());
img.copyTo(m1, mask);
m2.push_back(m0.reshape(0, 1));

当然这里还有一些其他的操作,有时间可以试试

以上就是我对图像数组的常用操作资料的整理,能力有限,不是很全面和详细,希望大家批评指正。
本文介绍了OpenCV中创建图像数组的方式,包括不复制数据和从其他cv::Mats复制数据的构造函数。接着讲解了如何单独访问数组元素、按块访问像素,以及数组还能进行的其他操作。虽然内容不全面,但提供了图像数组常用操作的基础知识。
442

被折叠的 条评论
为什么被折叠?



