一、
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));
当然这里还有一些其他的操作,有时间可以试试
以上就是我对图像数组的常用操作资料的整理,能力有限,不是很全面和详细,希望大家批评指正。