gpt4 book ai didi

cvTranspose 给出不同的图像大小?

转载 作者:太空狗 更新时间:2023-10-29 15:53:20 25 4
gpt4 key购买 nike

我是 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;

我想转置它:

IplImage *imgT = cvCreateImage(cvSize(height,width),img->depth,img->nChannels);

cvTranspose(img,imgT);

当我检查图像时,我看到原始图像 img 的大小为 329324,这是正确的:493*668* 1 字节,因为它是 无符号字符。但是 imgT 的大小为 331328。

我不太确定这是哪里发生的。

编辑:1- 我使用的是 Windows XP 和 OpenCV 2.2。2- 当我检查图像时,我的意思是当我看到变量 imgT 的值时。如imgT->width、imgT->heigt、imgT->size等

最佳答案

这是因为 OpenCV 在 4 字节边界处对齐图像的行。在第一个图像中,一行的宽度为 668 字节,可以被 4 整除,因此您的图像元素是连续的。

第二张图片的宽度为 493(由于转置),它不能被 4 整除。下一个可被 4 整除的更高数字是 496,所以你的行实际上是 496 字节宽,有 3 个未使用的字节在每行的末尾,以 4 字节边界对齐行。事实上 496*668 确实是 331328。所以你应该始终意识到一个事实,你的图像元素不需要是连续的(至少它们在一行内应该是连续的)。

关于cvTranspose 给出不同的图像大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6362782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com