打印图像
可以使用cout << Mat << std::endl
来打印一个Mat的内容,如下所示
Mat img = imread("pic.jpg");
cout << img << std::endl;
reshape 图像
reshape 可以用来改变图像的长宽,例如3*3的变成1*9,但是不改变原图,与resize区分开。
#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
using namespace std;
using namespace cv;
int main(){
uchar a[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
Mat src(3, 3, CV_8U, a);
cout << src.reshape(1,9) << endl;
return 0;
}
掩码
Mat mask=src<0;
这样很快建立一个mask了。
例如
int main(){
uchar a[3][3] = { 1, 4, 3, 2, 5, 3, 6, 4, 3 };
Mat src(3, 3, CV_8U, a);
Mat mask;
mask = src <= 3;
cout << mask << std::endl;
return 0;
}
输出结果为
[255, 0, 255;
255, 0, 255;
0, 0, 255]