作者SiriusJinn (假斯汀)
看板C_and_CPP
标题Re: [问题] OpenCV 做透视转换
时间Sun Jun 14 19:27:32 2009
void fun3()// 透视转换
{
//透视变换
IplImage* Img_old;
IplImage* Img_new;
Img_old = cvLoadImage("lena.bmp",1); //载入图像
int fix = 50;
int w = Img_old->width + fix;
int h = Img_old->height + fix;
CvPoint2D32f src_point[4];
CvPoint2D32f dst_point[4];
//设定源观察面,即指定四边形的四个顶点
src_point[0].x=100;
src_point[0].y=340;
src_point[1].x=420;
src_point[1].y=340;
src_point[2].x=100;
src_point[2].y=100;
src_point[3].x=420;
src_point[3].y=100;
//设定目标观察面,即指定四边形的四个顶点
dst_point[0].x=-fix;
dst_point[0].y=h;
dst_point[1].x=w;
dst_point[1].y=h;
dst_point[2].x=-fix;
dst_point[2].y=-fix;
dst_point[3].x=w;
dst_point[3].y=-fix;
float newm[9];
CvMat newM = cvMat( 3, 3, CV_32F, newm );
//获得透视转换矩阵
cvWarpPerspectiveQMatrix(src_point,dst_point,&newM);
//透视转换
cvWarpPerspective(Img_old,Img_new,&newM,CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,
cvScalarAll(0) );
cvNamedWindow("image",1); //创建窗口
cvShowImage("image",Img_new); //显示图像
cvWaitKey();//等待按键
cvDestroyWindow("OpenCV win");//销毁窗口
cvReleaseImage(&Img_new);//释放图像
return;
}
跑出来是没有error,却多了一堆warning
warning C4244: '=' : conversion from 'int' to 'float', possible loss of data
warning C4700: uninitialized local variable 'Img_new' used
基本上是这两种错误
有人可以帮指点一下吗?
感谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.62.36.60
1F:推 wa120:CvPoint2D32f 是float型别 Img_new你没用到 06/14 19:35
2F:→ SiriusJinn:那要把x、y重新宣告吗?Img_new是我要输出的图 06/14 19:57
3F:→ SiriusJinn:那应该要怎麽写才好呢?谢谢回答 06/14 19:59
4F:推 licheer:Img_new 宣告成指标型态, 要再 cvCreateImage 06/14 20:08
5F:→ licheer:CvPoint2D32f src_point,dst_point 06/14 20:09
6F:→ licheer:要改成 src_point[0].x=100.f 否则会出现 warning 06/14 20:10
7F:→ licheer:不过这个没差 06/14 20:10
8F:→ SiriusJinn:wa大,我宣告改成指标後就OK了,但cvCreateImage部份还 06/14 21:30
9F:→ SiriusJinn:是有点问题耶似乎格式不太对 06/14 21:31
Img_new = cvCreateImage( cvSize(320,240), Img_old->depth, Img_old->nChannels);
※ 编辑: SiriusJinn 来自: 140.120.90.174 (06/14 21:33)
10F:推 wa120:建议用cvGetSize(Img_old) 取代 cvSize()如果size有相关的话 06/14 21:38
11F:→ SiriusJinn:我修改成功了,可以正确显图了,只是不太像透视转换= = 06/14 21:41
12F:→ SiriusJinn:图都跑到左上角去了 06/14 21:43
13F:→ SiriusJinn:出现0xC000001D错误怎麽办? 06/14 22:25
14F:→ licheer:图跑到左上角,dst_point的座标调整一下 06/14 23:40