OpenCV 显示一幅图片

代码如下:

 1 /*a simple OpenCV program tha loads an image from disk and display it on 
 2   the screen
 3 */
 4 #include<highgui.h>
 5 
 6 int main(int argc, char* argv[])
 7 {
 8     /*load image*/
 9     IplImage* img = cvLoadImage(argv[1]);
10     /*create a window named DisplayImage*/
11     cvNamedWindow("DisplayImage",CV_WINDOW_AUTOSIZE);
12     /*show image*/
13     cvShowImage("DisplayImage",img);
14     /*wait for a keystroke*/
15     cvWaitKey(0);
16     /*release image*/
17     cvReleaseImage(&img);
18     /*destroy window*/
19     cvDestroyWindow("DisplayImage");
20     return 0;
21 }

1.

int cvNamedWindow(const char* name, int flags);

  name:窗口的名字

  flag:窗口属性标志。有CV_WINDOW_AUTOSIZE (1)和 0 两种。CV_WINDOW_AUTOSIZE可以自适应图像的大小来显示窗口,0则固定窗口大小。

  被创建的窗口可以通过它的名字被引用。

2.

IplImage* cvLoadImage( const char* filename, int flags=CV_LOAD_IMAGE_COLOR );

  filename:要被读入的文件名,比如lena.jpg

  flags:CV_LOAD_IMAGE_COLOR、CV_LOAD_IMAGE_GRAYSCALE、CV_LOAD_IMAGE_ANYCOLOR

      CV_LOAD_IMAGE_COLOR: 三通道

      CV_LOAD_IMAGE_GRAYSCALE:单通道

      CV_LOAD_IMAGE_ANYCOLOR:保持不变

  cvLoadImage 从文件读入图像,返回读入图像的指针IplImage*

3.

void cvShowImage( const char* name, const CvArr* image );

name:窗口的名字
image:被显示的图像

4.

int cvWaitKey( int delay=0 )

当delay>0时,表示等待的毫秒数
当delay<=0时,等待任意键的strike

5.IplImage 结构体:

定义如下(来自百度百科,2013/12/5):

typedef struct _IplImage
{
  int nSize; /* IplImage大小 */
  int ID; /* 版本 (=0)*/
  int nChannels; /* 大多数OPENCV函数支持1,2,3 或 4 个通道 */
  int alphaChannel; /* 被OpenCV忽略 */
  int depth;       /* 像素的位深度,主要有以下支持格式: IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16U,IPL_DEPTH_16S, IPL_DEPTH_32S,
                    IPL_DEPTH_32F 和IPL_DEPTH_64F */
  char colorModel[4]; /* 被OpenCV忽略 */
  char channelSeq[4]; /* 同上 */
  int dataOrder; /* 0 - 交叉存取颜色通道, 1 - 分开的颜色通道.只有cvCreateImage可以创建交叉存取图像 */
  int origin; /*图像原点位置: 0表示顶-左结构,1表示底-左结构 */
  int align; /* 图像行排列方式 (4 or 8),在 OpenCV 被忽略,使用 widthStep 代替 */
  int width; /* 图像宽像素数 */
  int height; /* 图像高像素数*/
  struct _IplROI *roi; /* 图像感兴趣区域,当该值非空时,只对该区域进行处理 */
  struct _IplImage *maskROI; /* 在 OpenCV中必须为NULL */
  void *imageId; /* 同上*/
  struct _IplTileInfo *tileInfo; /*同上*/
  int imageSize; /* 图像数据大小(在交叉存取格式下ImageSize=image->height*image->widthStep),单位字节*/
  char *imageData; /* 指向排列的图像数据 */
  int widthStep; /* 排列的图像行大小,以字节为单位 */
  int BorderMode[4]; /* 边际结束模式, 在 OpenCV 被忽略*/
  int BorderConst[4]; /* 同上 */
  char *imageDataOrigin; /* 指针指向一个不同的图像数据结构(不是必须排列的),是为了纠正图像内存分配准备的 */
} IplImage;
 
原文地址:https://www.cnblogs.com/yongjiuzhizhen/p/3460434.html