如何将像素长度转换为厘米长度?

问题描述 投票:0回答:2

Original image 我想找到这条曲线的长度,在 cv2.arclength() 的帮助下,我找到了这条曲线的总长度,正如你在图片中看到的“total_len 359.8477599620819”,我知道这不是以厘米为单位,但这是以像素为单位,所以现在我必须将这个像素长度转换为现实世界的测量长度,如厘米或毫米然后我找到了一个代码pixel to centimetre但是在使用它之后我发现它显示的是 95.20971982330083 毫米长度这是错了,因为长度应该在 25 到 30 毫米之间。我不知道我在哪里犯了错误。我使用的是 mac book air 系统,图片分辨率为 420 x 423 像素。而且我也很困惑如何使用 dpi 以及如何为此选择 dpi,如果有人除了使用 DPI 之外还有任何其他解决方案,那么这对我来说将是一个很大的帮助。

我试图转换长度,但它以毫米为单位显示了错误的长度,因为我已经知道我期望转换的实际长度,可以将其转换为像素长度到毫米长度测量单位。

python image image-processing cv2
2个回答
0
投票

像素和厘米之间没有固定的换算系数,因为像素的大小取决于所使用的显示器。假设标准显示器的 DPI(每英寸像素数)为 96。这对于许多计算机显示器来说大致如此,但在大屏幕、智能手机显示器或使用投影仪时完全失败。当您打印图像时,尺寸又不同了。

通常可以通过一些函数调用来获取所用显示器的 DPI 值,但这仍然只是一个假设。

底线:除了非常具体的用例外,这不可能可靠。


0
投票

这个解决方案怎么样?

import sys
from PyQt5.QtWidgets import QApplication
from PIL import Image
app = QApplication(sys.argv)
screen = app.screens()[0]
dpi = screen.physicalDotsPerInch()
app.quit()
im = Image.open("sky.png")
width, height = im.size
width_length = round(width / dpi)
hight_length = round(height / dpi)
print(width_length, hight_length)

我正在使用

PyQt5
获取屏幕的 DPI,然后推断出图像的尺寸(以英寸为单位)。您可以调整它以获得以厘米为单位的尺寸。

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.