【发布时间】:2019-02-19 08:27:52
【问题描述】:
我想用 opencv 从图像中提取较暗的轮廓。我试过使用一个简单的阈值,例如下面(c++)
cv::threshold(gray, output, threshold, 255, THRESH_BINARY_INV);
我可以迭代阈值,比如说 50 ~ 200 然后我可以在中间得到较暗的轮廓 对于像这样具有明显区别的图像
这是阈值的结果
但是如果轮廓靠近边界,阈值就会失败,因为像素几乎相同。 比如这张图片。
我想问的是opencv中是否有任何技术可以在图像中间提取较暗的轮廓,即使轮廓到达边界并且与边界具有几乎相同的像素?
(更新)
在中间的阈值较暗轮廓与边框顶部重叠之后。 这让我无法提取前两个“SS”等字符。
【问题讨论】:
-
你能添加一个预期的结果吗?你的问题的表述方式,我不明白你的意思是在图像中间提取较暗的轮廓
-
即使将你得到的结果加上最后一张图片,也会更容易理解。
-
尝试自适应阈值
-
@RickM。所以从最后一张图片来看,中间较暗的轮廓应该是“SS400-17 291330-04”。我尝试使用阈值技术,但像素与边框边缘重叠。
-
@Miki 我尝试了您的建议,但结果噪音太大。最有可能可以提取使用噪声消除的前两个字符“SS”,但其他字符变得困难。见 [链接] (i.stack.imgur.com/vVmd5.png)
标签: opencv