1

我有一个运行 openCV 来播放视频的 Python 脚本。如果用户按下键盘上的“c”按钮,OpenCV 将保存用户单击“c”按钮时显示的帧。

问题是,我想通过 bash 脚本自动保存它——这意味着,在某些时候,我希望我的 bash 脚本“模拟”被按下的“c”按钮,以便它可以捕捉到那个快照。

我的(肯定是非常非 Pythonic)的方法是制作一个使用xdotool. 这是它的样子:

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

它找到pidpython 文件,找到窗口 ID,并模拟按下的“c”按钮。

这不起作用。可能是因为我的 bash 是错误的......

无论如何,这样做的pythonic方式什么?(不处理套接字......请......)。或者,如果您能告诉我我的 bash 脚本出了什么问题,那也太好了。但我真的只是想知道以python方式执行此操作的正确方法。我什至不需要按下按钮,可以是我发送的任何东西。

谢谢

4

0 回答 0