zoukankan      html  css  js  c++  java
  • 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;
     
  • 相关阅读:
    android数据恢复
    UVA 690 Pipeline Scheduling
    2017 国庆湖南 Day4
    2017 国庆湖南 Day5
    2017 国庆湖南 Day6
    2017国庆 清北学堂 北京综合强化班 Day1
    2017 国庆湖南Day2
    bzoj 2962 序列操作
    UVA 818 Cutting Chains
    UVA 211 The Domino Effect
  • 原文地址:https://www.cnblogs.com/yongjiuzhizhen/p/3460434.html
Copyright © 2011-2022 走看看