我是OpenCV的新手,我想转置灰度图像,但输出的大小错误.
// img is an unsigned char image
IplImage *img = cvLoadImage("image.jpg"); // where image is of width=668 height=493
int width = img->width;
int height = img->height;
Run Code Online (Sandbox Code Playgroud)
我想转置它:
IplImage *imgT = cvCreateImage(cvSize(height,width),img->depth,img->nChannels);
cvTranspose(img,imgT);
Run Code Online (Sandbox Code Playgroud)
当我检查图像时,我看到原始图像img的大小为329324,这是正确的:493*668* 1字节,因为它是一个unsigned char.但是imgT尺寸是331328.
我不确定这是怎么回事.
编辑:1-我正在使用Windows XP和OpenCV 2.2.2-当我检查图像时,我的意思是当我看到变量imgT的值.例如imgT-> width,imgT-> heigt,imgT-> size等.
Chr*_*ica 11
这是因为OpenCV以4字节边界对齐图像行.在第一个图像中,一行是668字节宽,可以分为4,因此您的图像元素是连续的.
第二个图像的宽度为493(由于转置),不能被4分割.下一个可被4分割的较高数字是496,所以你的行实际上是496字节宽,每个末尾有3个未使用的字节行,以4字节边界对齐行.实际上496*668确实是331328.所以你应该始终意识到这样一个事实,即你的图像元素不需要是连续的(至少它们应该在一行内是连续的).
| 归档时间: |
|
| 查看次数: |
1641 次 |
| 最近记录: |