将一个点的坐标分配给另一个OpenCV C
Assigning coordinates of a point to another OpenCV C + +
i进行了轮廓点(约300-1000点)的翻译,即,我更改了其x和y坐标,以将向量xoy的中心移动到重力中心,并使用此公式将其移动到重心:
vector<vector<Point> > contours_poly( contours.size() );
vector<vector<Point> > contours( contours.size() );
for(unsigned int i=0;i<contours.size();i++)
{
approxPolyDP( Mat(contours[i]), contours_poly[i], 2, true );
convexHull( Mat(contours[i]), hull[i], false );
}
/// centre de gravité
vector<Moments> mu(contours.size() );
for( int i = 0; i < contours.size(); i++ ){
mu[i] = moments( contours[i], false );
}
vector<Point2f> mc( contours.size() );
for( int i = 0; i < contours.size(); i++ ){
mc[i] = Point2f( mu[i].m10/mu[i].m00 , mu[i].m01/mu[i].m00 );
}
/// Translation* the program bug here !!
for(i=0; i < contours.size(); i++)
{ contours_poly[1][i].x -= mc[1].x;
contours_poly[1][i].y -= mc[1].y;
}
/// draw the new contour
for(unsigned int i=0;i<contours.size();i++)
{
drawContours( drawing, contours_poly, i, colors, 1, 8, vector<Vec4i>(), 0, Point() );
}
,但我不知道该错误是否是通过大量点的修改或公式为false生成的,因为这是结果: the application has requested the Runtime to terminate it in an unusual way.
谢谢。
您不应该更改for
循环的界限吗?
for(i=0; i < contours[0].size(); i++)
{
contours_poly[0][i].x = contours_poly[0][i].x - mc[1].x;
contours_poly[0][i].y = contours_poly[0][i].y - mc[1].y;
contours_poly[1][i].x = contours_poly[1][i].x - mc[1].x;
contours_poly[1][i].y = contours_poly[1][i].y - mc[1].y;
}
相关文章:
- 将数组的地址分配给变量并删除
- vector.resize()中的分配错误
- QGraphicsPolygonItem在拖动时未更新QPolygonF坐标
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- Win32编译器选项和内存分配
- 函数中堆分配的效果与缺少堆分配的情况
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 获取字符串的长度并将其分配给数组
- 将地址分配给本地指针后,公共对象的变量将消失
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 有没有一种方法可以使用placement new将堆叠对象分配给分配的内存
- 我在二维向量中是否正确分配了内存
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 正在尝试重载二进制搜索树分配运算符
- GlobalAlloc而不是其他分配方法
- 自定义先决条件对移动分配运算符有效吗
- 在 c++ 中为对话框分配坐标
- 将一个点的坐标分配给另一个OpenCV C