gpt4 book ai didi

Python/Opencv Float 在转换时转换为不正确的 Int

转载 作者:太空宇宙 更新时间:2023-11-03 22:10:28 30 4
gpt4 key购买 nike

我正在使用 OpenCV + Python 自动在一些视频上添加叠加图像。在大多数情况下,我的代码工作正常,除了从给定的输入视频中收集一些启发式方法。我使用 OpenCV VideoCapture.Get() 函数收集视频的帧数和 FPS,然后分别存储到变量中。结果数字是 float 值,然后我将其转换为 int,但问题在于:值下降了 1!

完整的代码片段在这里:

import cv2 as cv

inputnm = "testVideo.mp4"

# Load the video into memory
camera = cv.VideoCapture(inputnm)

# Get important heuristics
fps = camera.get(cv.CAP_PROP_FPS)
maxFrames = camera.get(cv.CAP_PROP_FRAME_COUNT)

print type(fps), type(maxFrames)
print fps,maxFrames
print int(fps), int(maxFrames)
quit()

这会产生输出:

<type 'float'> <type 'float'>
60.0 401.0
59 400

谁能给我解释一下这是为什么?我已经尝试将它转换为 numpy.float128 然后转换为 numpy.unit8 但它仍然将值降低 1。奇怪。

最佳答案

您刚刚看到了 float 的奇妙之处。

Python 将数字显示为与 float 对话的精确度,这通常足够精确以进行可视化,在许多情况下也可用于计算,但在像您这样的情况下,精度根本不够。

使用round(maxFrames)

关于Python/Opencv Float 在转换时转换为不正确的 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40286849/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com