OpenCV 垂直翻转图像
有两种方式,第二种方式该怎么写,求指教?详见下文代码:
static Mat frame;
cap>>frame;//从摄像头抓取一帧图像
//各种处理
imshow( "Capture",frame);
IplImage pImg= IplImage(frame);
*pWith=pImg.width;
*pHeight=pImg.height;
下面我需要对图像做垂直翻转:
#if 0
############################方式一:OK
cvFlip(&pImg,NULL,0); //核心在这里
// 垂直,水平或即垂直又水平翻转二维数组
// void cvFlip( const CvArr* src, CvArr* dst=NULL, int flip_mode=0);
//#define cvMirror cvFlip
// src 原数组.
// dst 目标责任制数组. 如果 dst = NULL 翻转是在内部替换.
// flip_mode 指定怎样去翻转数组。
// flip_mode = 0 沿X-轴翻转, flip_mode > 0 (如 1) 沿Y-轴翻转, flip_mode < 0 (如 -1) 沿X-轴和Y-轴翻转.见下面的公式
//
pImg.origin=1;
#endif
//char* data = pImg.imageDataOrigin;
char* data = pImg.imageData;
LPBYTE buffer=(BYTE*)data;
#if 1
#########################方式二:不行,求教方式二该怎么改???
for (int j=0;j<*pHeight/2;j++)
{
for (int i=0;i<*pWith;i++)
{
swap(buffer[i*(*pHeight-1-j)*3],buffer[i*j*3]);
swap(buffer[i*(*pHeight-1-j)*3+1],buffer[i*j*3+1]);
swap(buffer[i*(*pHeight-1-j)*3+2],buffer[i*j*3+2]);
}
}
#endif
return buffer;