我有一个运行openCV的Python脚本来播放视频。如果用户按下键盘上的“c”按钮,OpenCV将保存用户单击“c”按钮时显示的帧。
问题是,我想通过bash脚本自动保存 - 这意味着,在某些时候,我希望我的bash脚本“模拟”正在按下的“c”按钮,以便它可以拍摄。
我的(当然非常非pythonic)方法是使用xdotool
制作一个小的bashscript。这就是它的样子:
pid=$(pgrep -f "python cv_player.py")
echo $pid
while IFS= read line; do
if [[ "${line}" =~ (0x)([0-9a-z]+)([ ][- ][0-9]+[ ])([0-9]*) ]]; then
winId="${BASH_REMATCH[1]}${BASH_REMATCH[2]}"
pid="${BASH_REMATCH[4]}"
if [[ "${pid}" -eq "${pid}" ]]; then
WIND_IDS+=("${winId}")
fi
fi
done < <(wmctrl -lp)
if [ "${#WIND_IDS[@]}" -gt 0 ]; then
xdotool key --window "${WIND_IDS[@]}" c
fi
找到python文件的pid
,找到窗口ID,并模拟按下的“c”按钮。
这不起作用。可能是因为我的bash错了......
无论如何,是什么这样做的pythonic方式? (没有处理套接字...... plz ......)。或者,如果你能告诉我我的bash脚本有什么问题,那也很酷。但我真的只是想知道正确的方法来蟒蛇化。我甚至不需要它按下按钮,可以是我发送的任何东西。
由于