python - 从像素转换为通用公制(mm,in)
问题描述
我正在使用 openCV 处理图像并使用 houghcircles 检测被测图像中的圆圈,并使用欧几里得距离计算它们的中心之间的距离。由于这将以像素为单位,我需要以毫米或英寸为单位的绝对距离,谁能告诉我如何做到这一点
提前致谢。
解决方案
图像形成过程意味着通过镜头对真实的 3D 世界进行 2D 投影。在这个过程中,会丢失很多信息(例如三维),并且转换取决于镜头属性(例如焦距)。
像素距离和物理距离之间的转换取决于深度(相机和物体之间的距离)和镜头。复杂但更通用的方法是估计深度(有专门的算法可以在某些条件下做到这一点,但需要多个相机/视角)或使用可以测量深度的深度相机。一旦知道深度,在考虑到透镜投影的影响后,就可以进行估计。
您没有提供有关设置的太多信息,但可以通过实验测量转换。您只需拍摄已知尺寸的物体的照片,然后确定一个像素的物理尺寸(例如,如果物体是 10x10 厘米并且在图片中它有 100x100 像素,那么 10 像素就是 1 毫米)。这在很大程度上取决于物体到相机的距离。
一种更自动化的方法是使用已知尺寸的某种图案(例如棋盘)。它可以在图像中自动检测到,并可以进行相同的变换。
推荐阅读
- sql - 在子查询的返回值上使用 case
- automated-tests - 带有弹出消息的测试用例的关键词
- progressive-web-apps - 渐进式 Web 应用程序的 Lighthouse 评分
- swift - socket.on 回调在 socket.io swift 中重复多次
- java - 无法扫描 jar 文件:错误的幻数
- angular - Spring OAuth2 刷新令牌将再次对用户进行身份验证
- html - 如何使用 PowerShell 脚本在电子邮件正文中嵌入 HTML 文件内容?
- java - java.lang.IllegalArgumentException:无法在没有验证证明、会话信息或临时证明的情况下创建 PhoneAuthCredential
- nuget - 如何找出以下 Nuget 包的许可证是什么?
- excel - 如果语句不会将结果复制到单独的页面