1.读取显示图像
1 #include<opencv2/opencv.hpp> 2 #include<iostream> 3 using namespace cv; 4 using namespace std; 5 int main(int artc, char** argv) 6 { 7 //Mat src = imread("D:/学习与突破/OpenCV/C++与OpenCV/002.jpg"); 8 Mat src = imread("D:/学习与突破/OpenCV/C++与OpenCV/002.jpg", IMREAD_GRAYSCALE); 9 if (src.empty()) 10 { 11 printf("could not load image... "); 12 return -1; 13 } 14 namedWindow("input", WINDOW_NORMAL); 15 imshow("input", src); 16 waitKey(0); 17 return 0; 18 }
2.彩色图像与灰度图像转换 图像保存
1 #include<opencv2/opencv.hpp> 2 #include<iostream> 3 using namespace cv; 4 using namespace std; 5 int main(int artc, char** argv) 6 { 7 Mat src = imread("D:/学习与突破/OpenCV/C++与OpenCV/002.jpg"); //彩色图像 8 if (src.empty()) 9 { 10 printf("could not load image... "); 11 return -1; 12 } 13 namedWindow("input", WINDOW_NORMAL); 14 imshow("input", src); 15 waitKey(0); 16 Mat gray; 17 cvtColor(src,gray,COLOR_BGR2GRAY); 18 imshow("input",gray); 19 imwrite("D:/学习与突破/OpenCV/C++与OpenCV/write002.jpg", gray); 20 waitKey(0); 21 return 0; 22 }
3.Mat对象
Mat对象在C++内存中分头部和数据部分,头部信息包括:图像长高、图像通道数、类型等,数据部分是每一个像素点处的灰度值信息。
Mat对象的克隆和复制会生成一个全新的内存对象,Mat对象的赋值不会生成新的内存对象,赋值前后的两个指向同一个内存。
1 #include<opencv2/opencv.hpp> 2 #include<iostream> 3 using namespace cv; 4 using namespace std; 5 int main(int artc, char** argv) 6 { 7 Mat src = imread("D:/学习与突破/OpenCV/C++与OpenCV/002.jpg", IMREAD_GRAYSCALE); 8 //克隆 9 Mat m1 = src.clone(); 10 //复制 11 Mat m2; 12 src.copyTo(m2); 13 //赋值 14 Mat m3 = src; 15 16 //创建空白图像 17 Mat m4 = Mat::zeros(src.size(),src.type()); 18 Mat m5 = Mat::zeros(Size(512,1024),CV_8UC3); 19 Mat m6 = Mat::ones(Size(512, 512), CV_8UC3); 20 21 Mat kernel = (Mat_<char>(3, 3) << 0, -1, 4, 2, 4, 9, 1, -3, 3); 22 }
4