openCV下的第一段程序

openCV一些基础知识,以及栗子:图像的载入和显示

Posted by XushengLee on July 18, 2016

在导师的推荐下开始学习 openCV .

首先,来一个传送门 浅墨的csdn 这是我知识与力量的源泉 XD

一些基础知识

标配开头

#include <opencv2/core/core.hpp>  
#include<opencv2/highgui/highgui.hpp>  
using namespace cv;

和C++一个尿性.

关于Mat类型

cv::Mat类是用于保存图像以及其他矩阵数据的数据结构。默认情况下,其尺寸为0,我们也可以指定初始尺寸,比如,比如定义一个Mat类对象,就要写cv::Mat pic(320,640,cv::Scalar(100));

Mat类型作为OpenCV2新纪元的重要代表“人物”,但现在我们只要理解,它是对应于OpenCV1.0时代的IplImage的主要用来存放图像的数据结构就行了。对于这篇文章,我们需要用到关于Mat其实就简单的这样一句代码:Mat myMat= imread("dota.jpg");

表示从工程目录下把一幅名为dota.jpg的jpg类型的图像载入到Mat类型的myMat中。

载入和显示

在新版本的OpenCV2中,最简单的图像载入和显示只需要3句代码,非常便捷。这三句代码分别对应了三个函数,他们分别是:
imread( ), namedWindow( )以及imshow( )。
Mat imread(const string& filename, intflags=1 ); 载入
void namedWindow(const string& winname,int flags=WINDOW_AUTOSIZE ); 创建窗口
void imshow(const string& winname, InputArray mat); 在指定的窗口中显示一幅图像
想了解具体函数声明细节的话,请使用传送门 XD

#include<opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;  //可以写两个的,缺省形式.    
int main(){
// load image and dispaly
Mat tattooGirl;
tattooGirl = imread("/Users/mac/Desktop/ctest/tattoo.jpg");
//在CLion下编译应该是编译生成的文件在内存里,所以应使用绝对路径.debug的泪.
namedWindow("test1");
imshow("test1",tattooGirl);
waitKey(0);  //写上之后才能看见,否则,就是一残影
return 0;
}

对cv::waitkey(int delay=0)的解释

首先,Python: cv2.waitKey([delay]) → retval py下不太一样.
只是c++上是默认为0,
当delay<=0时,会无限等待下去.直到你对着图片触发键盘or停止运行
当delay=k,k>0,表示等待k ms 后自动消失.
好像处理视频时,有其他用途 传送门2号
嗯,就到这里吧 XD 哦呀思密