我想绘制轮廓以裁剪图像中的对象,但是输入的分辨率较低且图像不清楚。
我尝试在opencv中使用绘制轮廓,但效果不佳,它像我下面发布的图像一样是板组
Gray image and draw contour by opencv
我想绘制轮廓并像这样裁剪图像
还有一件事,您是否有任何想法可以计算图像中的印版?
答案 0 :(得分:0)
基于图像。显示绿色后, 运行opencv分区。将距离设置得足够大,以使其远离左噪声。这是来自@Miki's answer的示例:
int th_distance = 18; // radius tolerance
int th2 = th_distance * th_distance; // squared radius tolerance
vector<int> labels;
int n_labels = partition(pts, labels, [th2](const Point& lhs, const Point& rhs) {
return ((lhs.x - rhs.x)*(lhs.x - rhs.x) + (lhs.y - rhs.y)*(lhs.y - rhs.y)) < th2;
});
然后对于分区中的每个标签,使用凸包或简单地将max放置到边界框中,以找到水平Rect(如果您要这样做)
通过查看凸包或水平Rect的主方向的中心有多少个交叉,计数会更容易