我有几个视频,我想逐帧浏览它们,并通过按键盘键(取决于帧)对其中一些进行注释。对于许多帧我不会按任何键。这是我到目前为止所拥有的:
import numpy as np
import cv2
cap = cv2.VideoCapture('video.mp4')
frame_number = []
annotation_list = []
i = 0
while(True):
# Read one frame.
ret, frame = cap.read()
# Show one frame.
cv2.imshow('frame', frame)
# Set the time between frames in miliseconds
c = cv2.waitKey(500)
i = i + 1
try:
annotation_list = annotation_list + [chr(c)]
frame_number = frame_number + [i]
except:
continue
Run Code Online (Sandbox Code Playgroud)
因此,这将显示每一帧 0.5 秒,并与我按下按钮的每一帧和给定的字母相关联。我现在需要的是一个选项,这样对于给定的帧,我可以根据需要在该帧处停止视频,例如按“空格”,以便考虑如何对其进行注释,然后按“空格” “一旦我决定如何注释,就再次继续视频。如何添加此暂停/继续选项?谢谢你!
我有一个 pd 数据框,其中名为“process_id”的列对于多个时间步骤具有与其关联的不同参数。我想从中提取一些信息并将它们放入一个新的数据框中(这样我就不必使用数据的所有细节)。下面是我的意思的一个例子,我为每个“process_id”保留每个参数的最小值、最大值、平均值和标准差,我还定义了一个 lambda 函数来保存最后 5 个时间步中参数的平均值:
features = df.groupby('process_id').agg(['min', 'max', 'mean', 'std', lambda x: x.tail(5).mean()])
Run Code Online (Sandbox Code Playgroud)
这工作正常,并且 lambda 函数将表中参数的名称更改为如下所示:“parameter_lambda”(不确定如何,但它有效)。现在的问题是,如果我想添加另一个 lambda 函数,像这样(或任何其他 lambda 定义):
features = df.groupby('process_id').agg(['min', 'max', 'mean', 'std', lambda x: x.tail(5).mean(),lambda x: x.iloc[0:int(len(df)/5)].mean()])
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
函数名必须唯一,发现多个命名
这是有道理的,因为两个 lambda 函数在数据框中都具有相同的名称。但我不知道如何解决这个问题。
我试过这样的事情:
df.groupby('dummy').agg({'returns':{'Mean': np.mean, 'Sum': np.sum}})
Run Code Online (Sandbox Code Playgroud)
描述在这里,但我得到这个错误:
规范错误:无法使用嵌套字典为返回执行重命名
有人能帮我吗?谢谢!
我需要使用三次样条(我主要对高阶导数感兴趣),我从 scipy https://docs.scipy.org/doc/scipy-0.18.1/reference/ generated/scipy.interpolate 找到了这个例子。 CubicSpline.html(第一个带有 sin 函数的)。他们有这一行:plt.plot(xs, cs(xs, 2), label="S''"),我认为它应该绘制二阶导数。但 sin 的二阶导数是 -sin,而它们的函数确实看起来都是 -sin。我在这里缺少什么?我怎样才能真正得到二阶导数?谢谢你!

如何获得 sympy 表达式中出现的操作?例如,对于:2+x**2+exp(7*x)-log(y),我需要返回类似: 的内容["+","**","exp","*","-","log"]。我发现有一种简单的方法来获取变量,使用.free_symbols. 有没有简单的操作方法?我还发现了这个函数:srepr它返回:"Add(Pow(Symbol('x'), Integer(2)), exp(Mul(Integer(7), Symbol('x'))), Mul(Integer(-1), log(Symbol('y'))), Integer(2))"。这包含了我需要的一切,但我不确定如何以有效的方式从那里提取我需要的所有部分?有人能帮我吗?谢谢你!
我正在编写一个脚本,我试图在其中处理出现在 sympy 表达式中的不同数字。为了提取我需要的东西,我使用了类似的东西: isinstance(expr, sympy.numbers.Float),它检查出现在我的表达式中的数字是否是一个浮点数。这适用于大多数数字(浮点数、整数和有理数)。但是,我对负数有一些问题。例如,如果我这样做:
eq = parse_expr("cos(2*a)+cos(0.5*b)")
srepr(eq)
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
Add(cos(Mul(Integer(2), Symbol('a'))), cos(Mul(Float('0.5', precision=53), Symbol('b'))))
Run Code Online (Sandbox Code Playgroud)
这表示我有一个整数 2 和一个浮点数 0.5,这正是我所需要的。但是,如果我这样做:
eq = parse_expr("cos(-2*a)+cos(0.5*b)")
srepr(eq)
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
Add(cos(Mul(Integer(2), Symbol('a'))), cos(Mul(Float('0.5', precision=53), Symbol('b'))))
Run Code Online (Sandbox Code Playgroud)
所以基本上减号被忽略了。为什么会这样,我怎样才能让它保留减号并输出某种形式的东西Integer(-2)而不是Integer(2)?
谢谢!
我有一本形式为 的字典{0: -1.0, 21: 2.23, 7: 7.1, 46: -12.0}。
我怎样才能把它变成 {'p0': -1.0, 'p21': 2.23, 'p7': 7.1, 'p46': -12.0}
有效地即:
没有 for 循环之类的东西dict[key[i]] = dict.pop("p"+str(key[i]))?
python ×6
sympy ×2
cubic-spline ×1
dictionary ×1
lambda ×1
opencv ×1
pandas ×1
scipy ×1
video ×1