lovepan1314

解决OpenCV图像数据倒立的问题

0
阅读(1141)

在使用OpenCV显示图像时会出现图像倒立的情况,IplImage的origin属性有关系。origin为0表示顶左结构,即图像的原点是左上角,如果为1为左下角。一般从硬盘读入的图片或者通过cvCreateImage方法创建的IplImage图片默认的origin为0,即显示的时候都是正的。而由摄像头或者视频文件获取的帧图像origin为1,此时显示的时候扫描顺序是从下到上,显示也是正的。但是如果你自己创建了一个IplImage格式的图像img,且从帧图像中copy或者截取一部分区域进行显示的时候就会出现倒立情况。这是因为cvCreateImage方法得到的img的origin是0,而帧图像的origin为1,它会将帧图像的第i行赋值给img的第height-i行。

因此就出现了倒立.解决办法是:

1.在创建之后将origin调整为与帧图像的origin一致即可。但是这样在之后的操作中仍然要改变以前顶左下的图片操作习惯(也就是说操作数据的时候第一个像素还是会在左下角)。
2.最好的方法利用cvFlip(frame, NULL, 0); 将图片按X轴进行反转。得到正向的图片。这样改变了将图片改为顶左上的结构。利于后面的操作。

这样在操作ImageData的0号地址的时候操作也就是图像的第一个像素。