關於opencv中iplimage所儲存資料的討論
shelliar
opencv一書中,對iplimage和cvmat的講述不夠詳細,很多時候當我們處理影象的時候,我們會避免用cvmat而是直接用iplimage的方法。
iplimage這個結構體中儲存影象資料的部分是char * imagedata,這個指標指向影象陣列的首位址。而imagedata是乙個一維陣列,遍歷其資料的方法是使y從0~imagedata->height,假設影象為img,則每一行y位址指標即ptr = img->imagedata+y*img->widthstep,若影象是rgb即三通道的,則每行為3*img->width個資料(每個畫素佔3個資料),通過x和y的遞迴從而操作影象的資料。
另外iplimage的影象資料有的時候不得不轉換到cvmat,特別是二維矩陣以便於矩陣的各種計算,這個時候,轉換的方法為:
cv::mat img(pimg,0); // 0是不複製影像,也就是pimg與img的data共用同個記憶體位置,header各自有
cv::mat -> iplimage
// converts header to iplimage; no data is copied
// operator iplimage() const;
// img 是格式為cv::mat的資料
iplimage pimg;
pimg = iplimage(img); // 一樣檔案沒複製
cvmat 和 iplimage 的型別轉換,也可以用 cvgetmat , cvgetimage 兩個函式來實現。
還有麻煩的辦法,就是:
python中關於Opencv中關於矩形的函式總結
最近處理影象,以前用的都是matlab,現在入手python比較慢,這幾天看到了很多命名和功能相似的函式,作個記錄總結一下 只是為了能夠看下函式知道它是做什麼的,因此不會對其用法說得面面俱到。看到乙個文章講得清晰詳實,分享一下 功能 計算輪廓內的面積 示例 輸入為乙個點集 contours 0 為前...
關於OpenCV中IplImage的位元組對齊問題
最近利用做專案,遇到了乙個問題 我是用opencv讀的影象,然後自己新開闢了乙個空間,以下是 byte inputimage null iplimage image get null image get cvloadimage imagename,0 imagewidth image get wid...
opencv中關於畫素的常見操作
一 獲取影象畫素指標 mat.ptr int i 0 獲取畫素矩陣的指標,索引i表示第幾行,從0開始計行數。獲得當前行指標const uchar current myimage.ptr row 獲取當前畫素點p row,col 的畫素值 p row,col current col 二 畫素範圍處理s...