OpenCV- 图像文件读入和显示

C语言版本

/***********************************************************************

 * OpenCV example

 * By Shiqi Yu 2006

 ***********************************************************************/

 

#include "cv.h"

#include "highgui.h"

 

int main( int argc, char** argv )

{

    IplImage* pImg; //声明IplImage指针

 

    //载入图像

    if( argc == 2 && 

        (pImg = cvLoadImage( argv[1], 1)) != 0 )//[[此处的argc==2是否需要改成argc==1?我改了之后才能运行成功。求大牛解惑]] //  wmzzzz : 在"属性"|"debug"|里的command arguments 里加入参数(一个路径:要打开的文件路径) 这时 argc==2 就合理了...可以试试多加几个

    {

        cvNamedWindow( "Image", 1 );//创建窗口

        cvShowImage( "Image", pImg );//显示图像

 

        cvWaitKey(0); //等待按键

 

        cvDestroyWindow( "Image" );//销毁窗口

        cvReleaseImage( &pImg ); //释放图像

        return 0;

    }

 

    return -1;

}

[编辑]

函数说明

cvLoadImage( filename, -1 ); 默认读取图像的原通道数

cvLoadImage( filename, 0 );强制转化读取图像为灰度图

cvLoadImage( filename, 1 );读取彩色图

C++语言版本 based on OpenCV 2.1

/***********************************************************************

 * OpenCV 2.1 example

 * By Pebbler Chung 2010

 ***********************************************************************/

 

#include "cv.h"

#include "highgui.h"

 

using namespace cv; //下面的所有cv相关类型不用加上前缀了

 

int main(int argc, char* argv[])

{

    Mat img = imread("lena.jpg"); //声明Mat变量并调入lena的照片

 

    if(!img.data) //判断图片调入是否成功

         return -1; //调入图片失败则退出

    //创建窗口,并确定其为大小不可变类型窗口

    namedWindow("loveLena", CV_WINDOW_AUTOSIZE); 

 

    //显示图片。如果你不介意窗口大小可变,可以直接注释掉上一句。因为imshow可以直接创建窗口

    imshow("loveLena", img);

 

    waitKey(); //等待按键

 

    return 0;

}


C++语言版本 based on OpenCV 2.3.1

/***********************************************************************

 * OpenCV 2.3.1 example

 * By Quarryman 2012

 ***********************************************************************/

#include "stdafx.h"

#include

#include

 

using namespace cv;

using namespace std;

 

int main()

{

string imagename = "lena.jpg";   //此处需要填写绝对地址,我测试时使用相对地址出错。

 

//读入图像

Mat img = imread(imagename);

 

//如果读入图像失败

if(img.empty())

{

return -1;

}

 

//创建窗口

namedWindow("image",1);

 

//显示图像

imshow("image", img);

 

//等待按键,按键盘任意键返回

waitKey();

 

return 0;

 

       //错误指出: feihongmeilian

       //经本人验证,string imagename = "lena.jpg";  处是可以使用相对地址,本人使用环境为OpenCV 2.4.3

       //图片为meinv.jpg置于代码文件所在文件夹的上一级文件夹中,string imagename = "..\\meinv.jpg"  图片可正常显示。

      //需提醒注意的是 双引号“” 中出现的第一个 斜杠 \ 被视作转义字符

}

C++版本的好处

  1. 在于可以尽量避免使用指针这种危险的东西了。
  2. 另一个好处便在于,不用费心去release资源了,因为在其destructor里面,系统会自动帮你搞定。


http://wiki.opencv.org.cn/index.php/图像文件读入和显示

你可能感兴趣的:(开发技巧)