本專題是學習algorithms for image processing and computer vision的筆記。
aipcv是書名的縮寫。
使用opencv時,需要了解的關鍵細節是資料結構的如何實現。因此,吧opencv和aipcv連線起來的主要工作在於提供一種兩個系統之間轉換影象資料結構的方法。對於灰階單通道的影象來說,這一點很簡單,對於彩色影象來說,則更複雜。
aipcv庫中的基本影象資料結構由兩個資料結構組成
乙個是表頭資訊,另乙個表示影象。
影象命名為image,由兩個指標組成,乙個紙箱頭資訊,乙個紙箱儲存的資料。
影象的結構體表示法如下:
struct image
;
頭資訊表示如下:
struct header
;
其中nr表示影象的行數,nc表示影象的列數,分別等同於iplimage->height和iplimage->width
oi和oj指定了影象的原點,只有在極少數情況下使用,比如還原,在opencv中沒有對應的字段。
怎樣實現aipcv和opencv之間轉換呢?
opencv轉換成aipcv
image fromopencv (iplimage *x)
else return 0;
for (i=0; iheight; i++) }
return img;
}
其中newimage表示新建一幅影象。具體如下:
struct image *newimage (int nr, int nc)
/* allocate the image structure */
x = (struct image *) malloc( sizeof (struct image) );
if (!x)
/* allocate and initialize the header */
x->info = (struct header *)malloc( sizeof(struct header) );
if (!(x->info))
x->info->nr = nr; x->info->nc = nc;
x->info->oi = x->info->oj = 0;
/* allocate the pixel array */
x->data = (unsigned char **)malloc(sizeof(unsigned char *)*nr);
/* pointers to rows */
if (!(x->data))
x->data[0] = (unsigned char *)malloc (nr*nc);
p = x->data[0];
if (x->data[0]==0)
for (i=1; idata[i] = (p+i*nc);
} return x;
}
aipcv轉換成opencv
iplimage *toopencv (image x)
}return img;
}
很好理解。 OpenCV學習與應用
1.vs2019配置opencv 2.python中使用pil快速實現灰度圖 3.灰度直方圖 4.影象直方圖均衡化equalizehist 5.影象的放大與縮小 6.的任意角度旋轉 7.imread 函式 原型 mat imread const string filename,int flags 1...
opencv學習 5 腐蝕與膨脹
include opencv2 imgproc imgproc.hpp include opencv2 imgcodecs.hpp include opencv2 highgui highgui.hpp include include using namespace cv global variab...
《學習OpenCV》 初探OpenCV(三)
引數1 影象 引數2 矩形的乙個頂點 引數3 矩形另乙個頂點 引數4 線條顏色 rgb 或亮度 灰度影象 可省略 有過載函式 引數5 線條粗細程度,取cv filled表填充色彩矩陣 引數6 線條型別 引數7 座標點的小數 cvmat cvcreatemat int rows,int cols,in...