孔雀开发小屋

专注并致力于手机客户端开发
<2010年10月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

  • 随笔 - 103
  • 文章 - 0
  • 评论 - 251
  • 引用 - 0

常用链接

留言簿(38)

随笔分类

随笔档案

关注的博客

朋友的博客

搜索

  •  

最新评论

阅读排行榜

评论排行榜

OpenCV中二维点求取进行透视变换之后的坐标点方法
我使用的是OpenCV 2.2版本。得到了一个透视矩阵,想把屏幕上的一个二维点经过这个透视矩阵进行变换,本身很简单的一个事情,却颇费了一番周折。原因是刚接触OpenCV,而且使用了OpenCV新添加的C++部分的矩阵类Mat,使用起来还真有点不顺手,因为OpenCV中没有向量的说法。一个矩阵变换一个向量就让我找了半天。

最终得以解决,还是使用了CvMat类而不是Mat类。代码如下:

1 CvPoint transformPoint(const CvPoint pointToTransform, const CvMat* matrix) 
2 {
3     double coordinates[3= {pointToTransform.x, pointToTransform.y, 1};
4     CvMat originVector = cvMat(31, CV_64F, coordinates);
5     CvMat transformedVector = cvMat(31, CV_64F, coordinates);
6     cvMatMul(matrix, &originVector, &transformedVector);
7     CvPoint outputPoint = cvPoint((int)(cvmGet(&transformedVector, 00/ cvmGet(&transformedVector, 20)), (int)(cvmGet(&transformedVector, 10/ cvmGet(&transformedVector, 20)));
8     return outputPoint;
9 }

这个函数一个很有用的地方就在于,原本二维图上的一个像素点位于(x,y)处,经过一个变换(仿射变换、透视变换)之后,求取它的新的坐标点(x', y')。

posted on 2011-05-24 10:46 孔雀 阅读(5717) 评论(0)  编辑 收藏 引用 所属分类: Graphics


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理