首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用图像处理检测两条垂直线?

问如何用图像处理检测两条垂直线?
EN

Stack Overflow用户
提问于 2017-10-02 09:19:54
回答 1查看 154关注 0票数 0

我试图用一些图像处理方法来检测附图中显示的两条垂直线。这条线的对比度很低。

位置用黄色箭头显示在第一个图像中。原始图像也附呈。

我尝试使用adaptiveThresholding和正常的阈值,在本地窗口使用最大值和最小值。但我没能察觉到线路。

如何在图像处理中检测出两条垂直线?

​

​

​

​

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-02 09:53:45

当亮像素对比度低时,有一些技巧。有一种阈值化方法- otsu阈值法(method),它可以用来检测直方图的光明一面。在此之后,您可以将直方图的这一部分规范化为(0,255),并将0设置为更暗的像素,如下所示:

代码语言:javascript
复制
cv::Mat img = cv::imread("E:\\Workspace\\KS\\excercise\\sjB8q.jpg", 0);
cv::Mat work;
for (int i = 0; i < 4; i++) // number of iterations has to be adjusted
{
    cv::threshold(img, work, 30, 255, CV_THRESH_OTSU);
    cv::bitwise_and(img, work,img);
    cv::normalize(img, img, 0, 255, cv::NORM_MINMAX, -1, work);
}

然后,您的对比将更好地在下面的图片(对于不同的迭代):

i=2:

​

​

i=4:

​

​

I =6:

​

​

在此之后,检测暗线应该更容易。这个答案只是对想法的解释。如果你想知道更多,请发表评论。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46522746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档