然而,大约PolyDP的结果包含如此多的顶点,所以我不能确定它是哪个形状。为了消除顶点,我想检测每个轮廓中的线并找到它们的交点。我怎么能为一个轮廓做到这一点?
对于圆检测,请使用HoughCircle。
在这里,您只需要寻找简化的多边形(三角形和正方形)。你试过在approxPolyDP中调整epsilon吗?
下面是一个来自openCV方块的示例片段。cpp示例代码-查看如何相对于轮廓大小设置近似精度(epsilon,approxPolyDP的第三个参数)。
C代码,但是openCV接口应该是相同的,所以我相信它很容易适应你的环境。
// test each contour
for( size_t i = 0; i < contours.size(); i++ )
{
// approximate contour with accuracy proportional
// to the contour perimeter
approxPolyDP(Mat(contours[i]), approx,
arcLength(Mat(contours[i]), true)*0.02, true);
// square contours should have 4 vertices after approximation
// relatively large area (to filter out noisy contours)
// and be convex.
// Note: absolute value of an area is used because
// area may be positive or negative - in accordance with the
// contour orientation
if( approx.size() == 4 &&
fabs(contourArea(Mat(approx))) > 1000 &&
isContourConvex(Mat(approx)) )
{
double maxCosine = 0;
for( int j = 2; j < 5; j++ )
{
// find the maximum cosine of the angle between joint edges
double cosine = fabs(angle(approx[j%4], approx[j-2], approx[j-1]));
maxCosine = MAX(maxCosine, cosine);
}
// if cosines of all angles are small
// (all angles are ~90 degree) then write quandrange
// vertices to resultant sequence
if( maxCosine < 0.3 )
squares.push_back(approx);
}
}
问题内容: 我在找(但不是画画!)某些数据的等高线: 我知道’cn’包含了我想要的轮廓线,但我似乎无法到达 他们。我试过几种方法: 无济于事。我知道“cn”是一个“轮廓集”,而且是一个数组 我认为“LineCollection”是一个line数组 片段,但我不知道如何提取这些片段。 我的最终目标是创建一个在世界地图上绘制数据的KML文件,并且 这些数据的等高线。 然而,由于我的一些数据点离得很近,
等高线图(也称“水平图”)是一种在二维平面上显示 3D 图像的方法。等高线有时也被称为 “Z 切片”,如果您想要查看因变量 Z 与自变量 X、Y 之间的函数图像变化(即 Z=f(X,Y)),那么采用等高线图最为直观。 自变量 X 和 Y 需要被限制在矩形网格内,您可以将 x 、y 数组作为参数传递给 numpy.meshgrid() 函数来构建一个网格点矩阵。 关于 meshgrid() 函数用法
我想,我很理解函数“cv2.FindOntours(图像、模式、方法)。但我在opencv的一个文档中得到了这个东西轮廓,层次=cv2.FindOntours(thresh,2,1)。我不明白这里2,1的含义以及为什么使用它们。请有人解释一下。
在“操作”菜单栏中点击等高线生成,弹出对话框如下。 加载要生成等高线的地形高程数据,设置导出的文件位置(最后生成为.shp文件),根据已有的地形高程数据进行设置合适的等高线间距(间距大于地形高程则无法生成),点击生成等高线。 点击查看等高线点击查看等高线如图,可以导入可加载shp格式的软件中查看。如果需要预览一片区域的等高线效果,请使用“等高线预览”功能查
在“操作”菜单栏中点击等高线预览,有绘制矩形和选择面生成两种选项,选择范围可以直接选择之前加载或绘制的一块面区域,这里讲绘制矩形生成等高线预览。 左键单击拖拽绘制矩形,再点击左键完成绘制。弹出对话框如下,框里显示的取点密度、等高线间距是系统默认计算的,可以修改。 点击预览,可以在地面上预览看到等高线了。等高线预览是根据内存中加载的地形数据进行采样动态生成的
在“操作”菜单栏中点击等高线预览,有绘制矩形和选择面生成两种选项,选择范围可以直接选择之前加载或绘制的一块面区域,这里讲绘制矩形生成等高线预览。 左键单击拖拽绘制矩形,再点击左键完成绘制。弹出对话框如下,框里显示的取点密度、等高线间距是系统默认计算的,可以修改。 点击预览,可以在地面上预览看到等高线了。等高线预览是根据内存中加载的地形数据进行采样动态生成的