C++ opencv入门学习1

因为最近在学习c++,恰好平时学习也会用到opencv,正好利用这个机会通过opencv加深对c++的理解。

图像和视频数据的读取
图像数据通过imread(path)来读取矩阵数据,视频是通过VideoCapture返回一个视频的输入流,从而可以一帧一帧的读取图像。 正如python中opencv通过numpy存储数据,c++中的图像数据通过一个简陋的矩阵类Mat类来存储图片数据。

int show_img(string &img_path) {
Mat src = imread(path, 1);
if (src.empty()) {
printf(“open pic failed”);
return -1;
}
cout << src.channels() << src.size() << endl;
namedWindow(“12”, WINDOW_FREERATIO); //定义一个可以自由缩放大小的窗
imshow(“12”, src); //名字需要一样才能放在一起
waitKey();
destroyAllWindows();
return 0;
}
void show_video(string &video_path) {
VideoCapture cap;
cap.open(path);
if (!cap.isOpened()) {
cout << “fail” << endl;
}
Mat img;
while (true) {
bool a = cap.read(img);
if (!a) {
break;
}
imshow(“1”, img);
waitKey(1);
}
destroyAllWindows();
}
通过查看Mat类的构造函数

Mat(int rows, int cols, int type);
Mat(Size size, int type);
Mat(int rows, int cols, int type, const Scalar& s);
//例如
Mat a(Size(512,512), CV_8UC3, Scalar(0,0,255));
type:CV_8UC1, …, CV_64FC4,指明构造的位深和通道数,Size()矩阵大小,Scalar是图像的颜色(0,0,255)红色,还有许多种构造方法,用的时候查一下就可以了

猜你喜欢

转载自blog.csdn.net/qq_33867131/article/details/129117947
今日推荐