[问题] OpenMP与OpenCV一起使用的程式问题

楼主: jason77623 (我思故我怪)   2016-06-01 22:59:28
开发平台(Platform):
VC++2012
额外使用到的函数库(Library Used):
OpenMP, OpenCV
问题(Question):
我已使用OepnCV将2D点群组成三角网
然后我想要,当我输入一组点坐标时,可以算出落在第几号三角网中
在这一部分我想使用OpenMp加速搜寻
喂入的资料(Input):
2D的平面点坐标
预期的正确结果(Expected Output):
可回传输入点的坐落三角网编号
错误结果(Wrong Output):
可以compiler,但无法run
程式码(Code):(请善用置底文网页, 记得排版)
void Find_Triangle_id(int &output_id,Point2f pt,vector<Vec6f> triangle_data,
vector<Point2f> boundary)
{
vector <Point2f> tri_pt(3);
Vec6f tri;
bool good_triangle;
output_id = -1; //如果回传-1 表示没有找
cout<<"start: "<<endl;
if(pointPolygonTest(boundary,pt,false)>0){ //如果有在边界范围内
#pragma omp parallel for private(tri_pt,tri,good_triangle)
for(int tri_id = 0;tri_id<triangle_data.size(); tri_id++){
good_triangle = true;
tri = triangle_data[tri_id];
tri_pt[0] = Point2f(tri[0],tri[1]);
tri_pt[1] = Point2f(tri[2],tri[3]);
tri_pt[2] = Point2f(tri[4],tri[5]);
for(char i=0;i<3;i++){
// 确认三角网的3个点都在范围内
if(pointPolygonTest(boundary,tri_pt[i],false)<0){
good_triangle = false;}
}
if(good_triangle){
// 如果input点坐标在三角网内,记录此三角网编号
if(pointPolygonTest(tri_pt,pt,false)>0){
output_id = tri_id;}
}
}
}
补充说明(Supplement):
vector<Vec6f> triangle_data已经从subdiv.getTriangleList(triangle_data)取得
vector<Point2f> boundary是我自己输入设定的4角边界坐标
函请有经验的高手帮我隔空抓个虫

Links booklink

Contact Us: admin [ a t ] ucptt.com