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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转】OpenCV里IplImage数据结构极易出错的问题,IplImage和单字节char*的相互转换

發(fā)布時(shí)間:2025/5/22 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】OpenCV里IplImage数据结构极易出错的问题,IplImage和单字节char*的相互转换 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://blog.csdn.net/liuyi1985/article/details/2174328

http://blog.csdn.net/liuyi1985/article/details/2195364

?對(duì)OpenCV稍有了解的同學(xué)都知道里邊用于存儲(chǔ)圖像數(shù)據(jù)的IplImage,其中有兩個(gè)屬性非常值得關(guān)注,稍不留神就會(huì)導(dǎo)致錯(cuò)誤(后附錯(cuò)例一則):一是width屬性;二是widthStep屬性。前者是表示圖像的每行像素?cái)?shù),后者指表示存儲(chǔ)一行像素需要的字節(jié)數(shù)。

????? 在OpenCV里邊,widthStep必須是4的倍數(shù),從而實(shí)現(xiàn)字節(jié)對(duì)齊,有利于提高運(yùn)算速度。如果8U單通道圖像寬度為3,那么widthStep是4,加一個(gè)字節(jié)補(bǔ)齊。這個(gè)圖像的一行需要4個(gè)字節(jié),只使用前3個(gè),最后一個(gè)空著。也就是一個(gè)寬3高3的圖像的imageData數(shù)據(jù)大小為4*3=12字節(jié)。

????? 需要注意的是,空著的那個(gè)像素并不是無效的,它仍然可以被操作,這就是導(dǎo)致錯(cuò)誤的根源。

????? 錯(cuò)例:

????? 假如現(xiàn)在有一個(gè)char* data的指針指向一個(gè)15*15的灰度圖像的數(shù)據(jù)起始地址,我們想把圖像數(shù)據(jù)通過cvShowImage函數(shù)顯示出來,比較直觀的一種做法如下:

......

IplImage
*?image?=?cvCreateImage(cvSize(15,?15),?8,?1);
memcpy(image
->imageData,?data,?15*15);

cvNamedWindow(
"window");
cvShowImage("window",?image);

cvWaitKey();

cvReleaseImage(
&image);
cvDestroyWindow(
"window");

......

????? 你會(huì)發(fā)現(xiàn),顯示的圖像奇怪的往左下角歪過去了。當(dāng)你看完這篇文章后希望不要再因?yàn)檫@個(gè)問題浪費(fèi)你的時(shí)間了(shamed:這個(gè)問題郁悶了我整整一天)。其實(shí)原因就在于,在cvCreateImage的時(shí)候,OpenCV為實(shí)現(xiàn)字節(jié)對(duì)齊,使得每行數(shù)據(jù)實(shí)際有16個(gè)字節(jié)(多出一個(gè)),在使用memcpy的過程中,這些多出的字節(jié)就把對(duì)應(yīng)的數(shù)據(jù)給“吃”了,因?yàn)檫@些數(shù)據(jù)在cvShowImage的時(shí)候并不會(huì)顯示出來,這樣,第二行就少一個(gè)字節(jié),第三行少兩個(gè)字節(jié),……,所以整個(gè)圖像就偏向左下角了!

????? 知道這一點(diǎn)后可以將memcpy語句更改如下:

for(int?i?=?0;?i<15;?i++)...{
????memcpy(image
->imageData?+?image->widthStep*i,?data + 15*i,?15);
}

????? 這樣,程序才能按我們的設(shè)想運(yùn)行。

OpenCV中IplImage和單字節(jié)char*的相互轉(zhuǎn)換

?IplImage和單字節(jié)char*之間相互轉(zhuǎn)換的正確、簡(jiǎn)潔的方法:

????? 已知 IplImage* image 和 char* data

????? 從 IplImage 到 char* :

data?=?image->imageData?//對(duì)齊的圖像數(shù)據(jù)

????? 或者

data?=?image->imageDataOrigin?//未對(duì)齊的原始圖像數(shù)據(jù)

????? 從 char* 到 IplImage :

image?=?cvCreateImageHeader(cvSize(width,height),?depth,?channels);
cvSetData(image,?data,?step);

????? step指定IplImage圖像每行占的字節(jié)數(shù)。需要注意是,在釋放空間時(shí)不能直接使用cvReleaseImage,而需cvReleaseImageHeader,然后再delete data,這也是OpenCV里邊“自己管理內(nèi)存”的思想。

????? 附《Intel image processing library》文檔中關(guān)IplImage的聲明(非OpenCV版):

typedef?struct?_IplImage?...{
????
int?nSize?/**//*?size?of?iplImage?struct?*/
????
int?ID?/**//*?image?header?version?*/
????
int?nChannels;
????
int?alphaChannel;
????
int?depth;?/**//*?pixel?depth?in?bits?*/
????
char?colorModel[4];
????
char?channelSeq[4];
????
int?dataOrder;
????
int?origin;
????
int?align;?/**//*?4-?or?8-byte?align?*/
????
int?width;
????
int?height;
????
struct?_IplROI?*roi;?/**//*?pointer?to?ROI?if?any?*/
????
struct?_IplImage?*maskROI;?/**//*pointer?to?mask?ROI?if?any?*/
????
void?*imageId;?/**//*?use?of?the?application?*/
????
struct?_IplTileInfo?*tileInfo;?/**//*?contains?information?on?tiling?*/
????
int?imageSize;?/**//*?useful?size?in?bytes?*/
????
char?*imageData;?/**//*?pointer?to?aligned?image?*/
????
int?widthStep;?/**//*?size?of?aligned?line?in?bytes?*/
????
int?BorderMode[4];?/**//*?the?top,?bottom,?left,?and?right?border?mode?*/
????
int?BorderConst[4];?/**//*?constants?for?the?top,?bottom,?left,?and?right?border?*/
????
char?*imageDataOrigin;?/**//*?ptr?to?full,?nonaligned?image?*/
}
?IplImage; 分享到:

轉(zhuǎn)載于:https://www.cnblogs.com/justiner/archive/2011/12/07/2278829.html

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的【转】OpenCV里IplImage数据结构极易出错的问题,IplImage和单字节char*的相互转换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费毛片基地 | 国产精品网站在线观看 | 四虎www | 一区二区三区四区欧美 | 成人性生生活性生交3 | 日韩三级观看 | 国产片网站 | 蜜臀av免费在线观看 | 134vcc影院免费观看 | 亚洲成人一二区 | 日韩中文字幕免费在线观看 | 天天爽夜夜爽一区二区三区 | 日韩欧美xxx | 午夜av网| 伊人久久久久久久久久久久久 | 性欧美18一19性猛交 | 国产三级在线免费 | 竹菊影视日韩一区二区 | 农村老熟妇乱子伦视频 | 荷兰av| 中文字幕一区二区在线老色批影视 | 一区二区在线视频观看 | 欧美成人精品一区二区免费看片 | 台湾佬美性中文娱乐网 | 无码人妻av免费一区二区三区 | 天天射狠狠干 | 国产99在线 | 亚洲 | 精品一区二区视频在线观看 | 亚洲福利视频一区二区三区 | 免费av网站大全 | 久久久久国产一区二区 | 风间由美一区二区三区 | 色图社区 | 国产一区二区三区在线免费观看 | 午夜色播 | 久久人妻少妇嫩草av无码专区 | 手机在线观看av网站 | 成人av手机在线 | 欧美日韩激情视频在线观看 | 999久久久国产 | 三浦惠理子aⅴ一二三区 | 三级免费网站 | 欧美日韩国产在线观看 | 国产成人精品亚洲精品色欲 | 精品无码国产一区二区三区51安 | 九九九九九热 | 伊人久久色 | 777亚洲| 91视频观看 | 黑人玩弄人妻一区二区三区四 | 久久青青视频 | 欧美性猛交 xxxx | 天堂久久av | 亚洲一区二区在线观看视频 | 午夜时刻免费入口 | 日韩欧美网站 | 亚洲精品专区 | 国产精品入口麻豆 | 成人综合在线视频 | 国产精品羞羞答答在线观看 | 国产美女极度色诱视频www | 国产精品污视频 | 秋霞av一区二区三区 | 欧美日韩1 | 蜜臀av免费一区二区三区水牛 | 日韩一区二区三区免费在线观看 | 寡妇高潮一级视频免费看 | 久久乐国产精品 | 天天av天天干 | 尤物193.com | 精品色综合 | 人妻大战黑人白浆狂泄 | 亚洲成人av电影网站 | 午夜影院h | 欧美精品一区二区三区视频 | 青青草成人在线观看 | 国产又爽又黄免费软件 | 日本不卡免费在线 | 在线视频一区二区 | 亚洲成色www久久网站 | 国产高清视频 | 神马午夜激情 | 黄色片免费在线播放 | 国产ts三人妖大战直男 | 精品成人久久久 | 免费日韩精品 | 天天干干天天 | 女人张开双腿让男人捅 | 不卡一区二区在线视频 | 成人影视免费 | 91激情在线观看 | 国产黄视频在线观看 | 奇米影视第四色7777 | 久久久久久av无码免费网站下载 | 青青久视频 | 免费色片网站 | 国产精品一区二区无码对白 | 一卡二卡三卡在线观看 | 姐姐你真棒插曲快来救救我电影 |