描述:我说的将多个点存入容器,不是自己手动一个点一个点的存,那样感觉很蠢,而且换一张和之前点数不一样的图片后就不行了,不具有普遍性。

解决:
首先定义一个结构:
#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类型。