目录
1.创建一个与src同等大小的图像
int main(int argc, char** argv) {
/*先显示一下图片*/
string path = "resouces\\test.png";
Mat src = imread(path);
if (src.empty()) {
cout << "could not load image!" << endl;
}
namedWindow("input", CV_WINDOW_AUTOSIZE);
imshow("input", src);
Mat dst;
dst = Mat(src.size(), src.type()); //创建一个与src相同大小的Mat对象dst
dst = Scalar(130, 130, 0); //颜色设置
namedWindow("output", CV_WINDOW_AUTOSIZE);
imshow("output", dst);
waitKey(0);
return 0;
}
2.克隆一个src图像
int main(int argc, char** argv) {
/*先显示一下图片*/
string path = "resouces\\test.png";
Mat src = imread(path);
if (src.empty()) {
cout << "could not load image!" << endl;
}
namedWindow("input", CV_WINDOW_AUTOSIZE);
imshow("input", src);
Mat dst;
dst = src.clone(); //克隆是完全数据的拷贝
//src.copeto(dst);也是同样的效果
namedWindow("output", CV_WINDOW_AUTOSIZE);
imshow("output", dst);
waitKey(0);
return 0;
}
3.关于通道数问题
BGR图像:三通道
GRAY图像:一通道
int main(int argc, char** argv) {
/*先显示一下图片*/
string path = "resouces\\test.png";
Mat src = imread(path);
if (src.empty()) {
cout << "could not load image!" << endl;
}
namedWindow("input", CV_WINDOW_AUTOSIZE);
imshow("input", src);
Mat dst;
cvtColor(src, dst, CV_BGR2GRAY); //dst转成src的灰度图
cout << "input image's channels:" << src.channels()<< endl;
cout << "output image's channels:" << dst.channels() << endl;
namedWindow("output", CV_WINDOW_AUTOSIZE);
imshow("output", dst);
waitKey(0);
return 0;
}
4.Mat用法
(三个通道的时候 是BGR图像)
int main(int argc, char** argv) {
/*先显示一下图片*/
string path = "resouces\\test.png";
Mat src = imread(path);
if (src.empty()) {
cout << "could not load image!" << endl;
}
namedWindow("input", CV_WINDOW_AUTOSIZE);
imshow("input", src);
Mat dst;
dst = Mat(100, 100, CV_8UC3, Scalar(0, 0, 255));
//这里的CV_8UC3 8是指8位 3是三个通道 后面Scalar跟的长度要吻合
namedWindow("output", CV_WINDOW_AUTOSIZE);
imshow("output", dst);
waitKey(0);
return 0;
}
(一个通道的时候 是灰度图)