• 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;
     
  • 相关阅读:
    Hive扩展功能(四)--HiveServer2服务
    Hive扩展功能(三)--使用UDF函数将Hive中的数据插入MySQL中
    Hive扩展功能(二)--HWI接口
    Hive扩展功能(一)--Parquet
    Flutter全局变量设置 (ScopedModel)
    PHP时间常用方法
    用iFrame Resizer解决iframe高度自适应问题
    aos.js超赞页面滚动元素动画jQuery动画库
    Jcrop最新手册
    jQuery Jcrop API参数说明(中文版)
  • 原文地址:https://www.cnblogs.com/yongjiuzhizhen/p/3460434.html
Copyright © 2020-2023  润新知