我是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等.
我有一个668x493的数组,我想保存.所以我正在做以下事情.
data:是一个指向保存值的数组的指针.
long lSize;
FILE* image_save;
image_save=fopen("image_save_file.bin","w+b");
fwrite(data,1,329324,image_save);
Run Code Online (Sandbox Code Playgroud)
但是,当我读回这个数组时:
char* check_image;
p1File=fopen("image_save_file.bin","r+b");
fseek (p1File , 0 , SEEK_END);
lSize = ftell (p1File);
fseek (p1File , 0 , SEEK_SET);
Run Code Online (Sandbox Code Playgroud)
当我检查lSize时,我看到它327680 ???
所以,当我做恐惧时,我只获得327680值!
请问,你能指出我的错误吗?