opencv

邂逅opencv

2016-04-09  本文已影响420人  二十四桥客_

初识OpenCV

OpenCV简介:

OpenCV (Open Source Computer Version)是一个基于开源的跨平台的计算机视觉库,可以实现图像处理和计算机视觉方面的很多通用算法。

OpenCV官方主页:http://opencv.org

OpenCV Github 主页:https://github.com/Itseez/opencv

OpenCV 开发版 Wiki 主页:http://code.open.org

Opencv可以解决如下领域问题:人机交互、物体识别 、图像分区 、人脸识别、动作识别、运动追踪、机器人。

OpenCV常见模块介绍:

Opencv 头文件

opencv.hpp中已经包含了OpenCV各个模块的头文件,,我们在编写core, objdetect, imgproc,photo,vedio,features2d,calib3d,ml,highgui,contrib 等模块应用程序时,原则上仅写上一句#include <opencv2/opencv.hpp> 即可,这样可以精简代码。

命名规范

常见的关键字字母组合包括:

虽然命名规则在这里,但是我们在应用中切记不要迂腐,不要墨守成规,该变通的时候还可以做适当的变通。

agrc与argv 认识
argc 和 argv[] 中的arg 指的是”参数”, 其中,argc为整数,用来统计运行程序时送给main函数的命令行的个数,默认值为1(程序的全路径名)。argv[ ] 表示字符串数组,用来存放指向字符串参数的指针数组,每一个元素指向一个参数。这两个参数在用命令行编译是有效。
图片的声明,读取和显示

简单体验

1.声明一副图像:

 Mat srcImage;
  1. 读取图片

     srcImage = imread(“PathOfImage”);
    
  2. 显示图像

     imshow(“Title”,srcImage);
    

图像的简单处理:

  1. 图像腐蚀:

     Met element = getStructuringElement(MORPH_RECT, Size(15,15)); // 设置参数
    
     erode(srcImage, dstImage, element);  // 进行图像腐蚀
    
  2. 图像模糊:

     blur(srcImage,dstImage,Size(7,7));
    
  3. 边缘检测

    cvtColor(srcImage,garyImage,CV_BG2GRAY);// 将图像转换为 灰度图像
    
    blur(grayImage,edge,Size(3,3));//对灰度图像使用 3* 3 内核来降噪
    
    Canny(edge, edge, 3, 9, 3);   // 进行边缘检测
    

由视频/相机采集图像

   VideoCaputure capture(“1.avi”);   // 读入视频

   // VideoCapture capture(0)  调用摄像头

  while(1){

      Mat frame;  // 定义Mat变量,用于存储每一帧图像

      capture >> frame;  // 读取当前帧

      imshow(“读取视频”, frame);  // 显示当前帧

       waitKey(30);  // 延迟30ms

   }

图像的载入,显示和输出

Imread 函数

函数原型为: Mat imread( const String& filename, int flags = IMREAD_COLOR );

其中第一个参数const String &类型的 filename,填我们需要载入的图片路径。Opencvimread 函数支持如下类型的图像载入。

如果不在上述枚举范围内取值,可以按照如下方式进行:

imshow函数

void imshow(const String& winname, InputArray mat);
第一个参数: const String& 类型的winname,填需要显示的图像标识名称。
第二个参数:InputArray 类型的 mat, 填需要显示的图像。函数原型中的InputArray可以简单的当做Mat类型即可。
imshow 函数用于在指定的窗口中显示图像。如果窗口用的而是CV_WINDOW_AUTOSIZE(默认值)标识创建的,那么显示图像的原始大小。否则,将图像以合适窗口缩放。

namedwindow()函数

namedWindow 的作用是通过制定窗口的名称,创建一个可以作为图像或者进度条的容器窗口。
函数原型:

 void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE);

第一个参数const String &类型的 name,填写被用作窗口的标识符的窗口名称。第二个参数,int类型的flags,窗口的标识,可以填写以下值:

  WINDOW_NORMAL     = 0x00000000,  用户可以改变窗口大小
  WINDOW_AUTOSIZE   = 1, 窗口大小会自动调整,以适应所显示的图像,并且用户不能手动改变窗口大小
  WINDOW_OPENGL     = 0x00001000,  窗口会支持OpenGL

imwrite 函数

imwrite函数用于将图像保存到制定的文件。图像格式是基于文件扩展名的,可以保存的扩展名和imread中可以读取的图像扩展名一致。

bool imwrite( const String& filename, InputArray img,
          const std::vector<int>& params = std::vector<int>());

第一个参数,const String & ,类型的filename, 填写需要写入的图像数据。注意,要带上后缀。

第二个参数,InputArray类型的 img,一般填一个Mat类型的图像数据。

第三个参数,为特定格式保存的参数编码。
对于JPEG 格式的图片,这个参数表示从0 到100 的图片质量。默认值为95。
对于PNG格式的图片,这个参数表示压缩级别从0 到9。 较高意味着更小的压缩尺寸和更长的压缩时间。
对于 PPM,PGMPBM 格式的图片。这个参数表示二进制格式标识,取值为0或者1,默认值为1.

上一篇 下一篇

猜你喜欢

热点阅读