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(3, 1, CV_64F, coordinates);
5 CvMat transformedVector = cvMat(3, 1, CV_64F, coordinates);
6 cvMatMul(matrix, &originVector, &transformedVector);
7 CvPoint outputPoint = cvPoint((int)(cvmGet(&transformedVector, 0, 0) / cvmGet(&transformedVector, 2, 0)), (int)(cvmGet(&transformedVector, 1, 0) / cvmGet(&transformedVector, 2, 0)));
8 return outputPoin
OpenCV中二维点求取进行仿射和透视变换之后的坐标点方法
最新推荐文章于 2024-08-18 23:51:51 发布
本文介绍了在OpenCV中如何使用Python进行二维点的仿射和透视变换,详细阐述了变换的过程及实现方法。
摘要由CSDN通过智能技术生成