版权声明:本文为博主原创文章,未经博主允许不得转载。如有问题,欢迎指正。 https://blog.csdn.net/weixin_43197380/article/details/89949364
描述:我说的将多个点存入容器,不是自己手动一个点一个点的存,那样感觉很蠢,而且换一张和之前点数不一样的图片后就不行了,不具有普遍性。
解决:
首先定义一个结构:
#include “vector”
struct Point
{
double x;
double y;
};
然后,没改之前的程序是下面这样的,
vector<Point> points;
Point point1;
for(int i = 0; i<5;i++)
{
point1.x=hv_MatchingCol[i].D();
point1.y=hv_MatchingRow[i].D();
points.push_back(point[i]);
}
因为point1.x,point1.y的值在不断更新,这就导致容器points里面存入的值不断被新进来的值给替换掉,而不是都存入容器points中。
解决办法就是point.x与hv_MatchingCol[i].D(),point.y与hv_MatchingRow[i].D();的值一一对应,而不是前面的值一直在更新。
改进之后的程序:
vector<Point> points;
Point point[5];
for(int i = 0; i<5;i++)
{
point[i].x=hv_MatchingCol[i].D();
point[i].y=hv_MatchingRow[i].D();
points.push_back(point[i]);
}
注:halcon 里面HTuple类型的 hv_MatchingCol,hv_MatchingCol里面之前就各有五个数,而hv_MatchingCol[i].D()是将HTuple类型转换为double类型。