日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IplImage类型解释和举例

發布時間:2024/8/23 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IplImage类型解释和举例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.IplImage結構

typedef struct _IplImage {int nSize; /* sizeof(IplImage) */int ID; /* version (=0)*/int nChannels; /* Most of OpenCV functions support 1,2,3 or 4 channels */int alphaChannel; /* ignored by OpenCV */int depth; /* pixel depth in bits: IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16S,IPL_DEPTH_32S, IPL_DEPTH_32F and IPL_DEPTH_64F are supported */char colorModel[4]; /* ignored by OpenCV */char channelSeq[4]; /* ditto */int dataOrder; /* 0 - interleaved color channels, 1 - separate color channels.cvCreateImage can only create interleaved images */int origin; /* 0 - top-left origin,1 - bottom-left origin (Windows bitmaps style) */int align; /* Alignment of image rows (4 or 8).OpenCV ignores it and uses widthStep instead */int width; /* image width in pixels */int height; /* image height in pixels */struct _IplROI *roi;/* image ROI. if NULL, the whole image is selected */struct _IplImage *maskROI; /* must be NULL */void *imageId; /* ditto */struct _IplTileInfo *tileInfo; /* ditto */int imageSize; /* image data size in bytes(==image->height*image->widthStepin case of interleaved data)*/char *imageData; /* pointer to aligned image data */int widthStep; /* size of aligned image row in bytes */int BorderMode[4]; /* ignored by OpenCV */int BorderConst[4]; /* ditto */char *imageDataOrigin; /* pointer to very origin of image data(not necessarily aligned) -needed for correct deallocation */ } IplImage;

2.pImgROI舉例

nSize=0:sizeof(pImgROI)函數的結果,所以它總共占用了112個byte,不包含這一個幀整個的圖像數據,而只是包含了pImgROI這個數據結構

      整個幀的圖像數據存放在imageData處,它所占用的空間大小可以這樣來計算:

      imageSize=762048=pImgROI->height * widthStep=672 * 2016

      可以注意到 2016 = 3 * 672

      我們可以知道 762048 =?pImgROI->height *?pImgROI->width * 3 (估計是通道數)

      在設置了ROI的值之后,圖像大小,width以及height也是完全沒有發生變化的。

nChannels=3 :三通道圖像

depth=8:參照cxtypes.h中的宏定義

#define IPL_DEPTH_1U 1 #define IPL_DEPTH_8U 8 #define IPL_DEPTH_16U 16 #define IPL_DEPTH_32F 32

  可知,這個幀采用了了IPL_DEPTH_8U類型,即無符號整形來存儲一個點的像素信息。

origin=1:表示底左格式的圖像,左下角是(0,0)點

roi:使用下面代碼設置roi之后

cvSetImageROI(pImgROI,cvRect(x,y,w,h)); //cvSetImageROI的功能是基于給定的矩形設置圖像的ROI(感興趣區域)

roi區域的值就發生變化

coi表示channel of? interest (感興趣的通道)

?imageData:包含一個指向第一行圖像數據的指針。

?

?部分參考自《學習OpenCV》

另外,可以查閱http://blog.sciencenet.cn/home.php?mod=space&uid=297739&do=blog&id=251363

?

一下兩個屬性為個人臆測:

colorModel:說明這個是什么類型的圖片,HSV,RGB,Gray,就是一個說明而已

channelSeq:說明了存儲順序,如圖就是以B,G,R順序存儲

圖片:

第(width-1)行  BGR BGR BGR BGR BGR

……

第三行 y=2    BGR BGR BGR BGR BGR

第二行 y=1    BGR BGR BGR BGR BGR

第一行 y=0    BGR BGR BGR BGR BGR

         ?? X=0 ?? 1 ?? 2 ? ? 3 ? ? ……

?

轉載于:https://www.cnblogs.com/jun14/archive/2013/01/14/2859520.html

總結

以上是生活随笔為你收集整理的IplImage类型解释和举例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。