我最近按照教程在我的 mac 上安装了 OpenCV for PYTHON: http ://www.pyimagesearch.com/2016/12/19/install-opencv-3-on-macos-with-homebrew-the-easy-way /
我编写了一个代码来读取视频文件,它能够检索 fps、时间戳、总数。帧数,在读取的每一帧:
cap = cv2.VideoCapture(particle_name + video_file_type)
while True:
time = cap.get(cv2.CAP_PROP_POS_MSEC)
fps = cap.get(cv2.CAP_PROP_FPS)
total_frames = cap.get(cv2.CAP_PROP_FRAME_COUNT)
print(time, fps, total_frames)
ret, frame = cap.read()
cv2.imshow('frame', frame)
cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
我在视频 A、.mov 格式、Motion JPEG 视频 (dmb1) 编解码器上尝试了此代码。以及视频 B、.avi 格式、Motion JPEG 视频 (MJPG) 编解码器。
对于视频 A 和视频 B,打印的 fps 和total_frames 都是常量。然而,对于视频 A,时间逐渐增加(理应如此),但对于视频 B,时间保持恒定为 0。
我认为可能是视频的格式导致了这种差异,因此我将视频 B 的格式更改为 .mov,同时保留相同的编解码器,但问题仍然存在。
我可以知道如何从视频 B 中检索准确的时间戳吗?
从这篇文章中,它指出 Windows 11 原生支持在 wsl 上运行 X11 和 Wayland 应用程序。
我尝试通过 docker 容器执行相同的操作,设置环境变量DISPLAY="host.docker.internal:0.0"
并运行 GUI 应用程序(如gedit
)。但我却得到了这个错误:
Unable to init server: Could not connect: Connection refused
Gtk-WARNING **: 17:05:50.416: cannot open display: host.docker.internal:0.0
Run Code Online (Sandbox Code Playgroud) 这是我绘制的图表:
# MatPlotlib
import matplotlib.pyplot as plt
# Scientific libraries
import numpy as np
plt.figure(1)
points = np.array([(100, 6.09),
(111, 8.42),
(119, 10.6),
(129, 12.5),
(139, 14.9),
(149, 17.2),
(200, 28.9),
(250, 40.9),
(299, 52.4),
(349, 64.7),
(400, 76.9)])
# get x and y vectors
x = points[:,0]
y = points[:,1]
# calculate polynomial
z = np.polyfit(x, y, 3)
f = np.poly1d(z)
# calculate new x's and y's
x_new = np.linspace(x[0], x[-1], 50)
y_new = f(x_new)
plt.plot(x,y,'bo', x_new, y_new)
plt.show() …
Run Code Online (Sandbox Code Playgroud) 我有这样的目录:
python_scripts/
test.py
simupy/
__init__.py
info.py
blk.py
Run Code Online (Sandbox Code Playgroud)
“ blk.py”和“ info.py”是包含多个函数的模块,其中一个是函数“ blk_func(para)”。
在“ __init__.py”中,我包含以下代码:
import os
dir_path = os.path.dirname(os.path.realpath(__file__))
file_lst = os.listdir(dir_path)
filename_lst = list(filter(lambda x: x[-3:]=='.py', file_lst))
filename_lst = list(map(lambda x: x[:-3], filename_lst))
filename_lst.remove('__init__')
__all__ = filename_lst.copy()
Run Code Online (Sandbox Code Playgroud)
我想在“ test.py”中访问函数“ blk_func(para)”以及包中的所有其他函数。因此,我通过将以下代码行放入“ test.py”来导入包:
from simupy import*
Run Code Online (Sandbox Code Playgroud)
但是,为了使用该功能,我仍然必须执行以下操作:
value = blk.blk_func(val_param)
Run Code Online (Sandbox Code Playgroud)
如何导入包simupy,以便仅通过调用函数名称就可以直接在“ test.py”中访问该函数?即
value = blk_func(val_para)
Run Code Online (Sandbox Code Playgroud) 我有一组要点,当我作图时,得到以下图表。我想在图表下找到面积,但是不确定scipy.integrate.simps还是numpy.trapz是否更合适。
有人可以为我提供这两个函数之间的数学背景的建议,从而得出关于哪个函数更准确的结论吗?
我有一堆图像,看起来像下面的图像,边缘厚度各不相同。
我想通过 python scipy.optimize.curve_fit 函数将正弦函数拟合到这个图像。然而,如图所示,条纹图案仅限制在圆形区域内。那我该如何进行拟合呢?
python ×5
matplotlib ×3
scipy ×2
cv2 ×1
docker ×1
numpy ×1
opencv ×1
python-3.x ×1
video ×1
wayland ×1
windows-11 ×1
windows-subsystem-for-linux ×1
x11 ×1