1.读取显示图像
1 #include2 #include 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...\n");12 return -1;13 }14 namedWindow("input", WINDOW_NORMAL);15 imshow("input", src);16 waitKey(0);17 return 0;18 }
2.彩色图像与灰度图像转换 图像保存
1 #include2 #include 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...\n");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 #include2 #include 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_ (3, 3) << 0, -1, 4, 2, 4, 9, 1, -3, 3);22 }
4