描述:我说的将多个点存入容器,不是自己手动一个点一个点的存,那样感觉很蠢,而且换一张和之前点数不一样的图片后就不行了,不具有普遍性。
解决:
首先定义一个结构:
#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类型。