OpenCV4.0学习笔记

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...\n");
12         return -1;
13     }
14     namedWindow("input", WINDOW_NORMAL);
15     imshow("input", src);
16     waitKey(0);
17     return 0;
18 }
imread imshow

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...\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 }
BGR2Gray imwrite

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 }
Mat克隆 复制 赋值

4

猜你喜欢

转载自www.cnblogs.com/yangmengke2018/p/10609939.html
今日推荐