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权限大全(链接地址整理)
    Android6.0运行时权限(基于RxPermission开源库)
    Android6.0机型上调用系统相机拍照返回的resultCode值始终等于0的问题
    使用AccessibilityService模拟点击事件失败的分析
    Android混淆打包配置总结
    okhttputils开源库的混淆配置(Eclipse)
    Android布局中的空格以及占一个汉字宽度的空格,实现不同汉字字数对齐
    java开发者大会:总结
    JAVA开发者大会:拍拍贷MQ系统原理与应用
    消息总线真的能保证幂等?
  • 原文地址:https://www.cnblogs.com/yongjiuzhizhen/p/3460434.html
Copyright © 2011-2022 走看看