c++ - 我的 findContours() 函数在具有不同 dpi 的图像上表现异常
问题描述
这是findContours()
两个相似图像的结果。它们具有相同的分辨率(1920x1080),但 DPI 不同(96 和 300)。
如您所见,较高 dpi 输入的结果给我一个 20 的轮廓大小,这是正确的,而低 dpi 的结果只是给我奇怪的结果。
我给出的论点是:findContours(gray, contours, CV_RETR_LIST, CV_CHAIN_APPROX_NONE)
这与CV_RETR_LIST
模式有关吗?
提前谢谢了:)
解决方案
在很多压缩情况下,例如保存 JPEG 图像或更改 DPI,会产生一些人眼几乎看不到的伪影。通常介于两种颜色之间。例如,在您的图像中,球体有颜色,背景是黑色。在彩色的周围,你会有一些几乎是黑色的像素。
您始终可以使用阈值函数抑制这些像素。这大部分是在传递给 findContours 函数之前完成的。
由于像素几乎是黑色的,因此将阈值设置得非常低就足够了,比如 10。
推荐阅读
- laravel - Laravel 6 steam auth - 如何存储?
- python - 如何在 Flask/python app.py 或 views.py 文件中提供、引用和保存静态文件,避免 FileNotFound 错误
- cypress - 有没有办法在 CYpress 中为 POST 请求创建和使用随机电子邮件地址
- aurelia - 将 Wrapbootstrap 主题与 Aurelia 一起使用
- python - PIL 双三次插值
- c# - Microsoft.AspNetCore.Http.HttpRequest 中的 HttpRequestBase.Files 集合的类比是什么
- java - Selenium - 鼠标悬停而不发生真正的鼠标
- whmcs - WHMCS:如何在可配置选项中添加域检查器
- javascript - 如何设置边界框的最小距离?
- php - 通过 URL 中的参数推送 CSS(路径)