pip install pycatima
でインストール可能。pybind11を使ってC++の実行ファイル DLLをPythonから呼んでいるので実行速度はCATIMA (C++版) とほぼ変わらない。
pip install pycatima
でインストール可能。pybind11を使ってC++の実行ファイル DLLをPythonから呼んでいるので実行速度はCATIMA (C++版) とほぼ変わらない。
import matplotlib.pyplot as plt import matplotlib.colors as mcolors import numpy as np univ_colors = [] univ_colors.append((255,75,0)) univ_colors.append((255,241,0)) univ_colors.append((3,175,122)) univ_colors.append((0,90,255)) univ_colors.append((77,196,255)) univ_colors.append((255,128,130)) univ_colors.append((246,170,0)) univ_colors.append((153,0,153)) univ_colors.append((128,64,0)) univ_colors.append((255,202,191)) univ_colors.append((255,255,128)) univ_colors.append((216,242,85)) univ_colors.append((191,228,255)) univ_colors.append((255,202,128)) univ_colors.append((119,217,168)) univ_colors.append((201,172,230)) univ_colors.append((255,255,255)) univ_colors.append((200,200,203)) univ_colors.append((132,145,158)) univ_colors.append((0,0,0)) for i,univ_color in enumerate(univ_colors): univ_colors[i] = f"#{univ_color[0]:02x}{univ_color[1]:02x}{univ_color[2]:02x}" ncols = int(len(univ_colors)/2) nrows = int(len(univ_colors)/ncols) color_grid = np.array(univ_colors).reshape(nrows, ncols) fig, ax = plt.subplots(figsize=(ncols, nrows)) ax.set_xticks([]) ax.set_yticks([]) for row in range(nrows): for col in range(ncols): rect = plt.Rectangle((col, nrows - row - 1), 1, 1, facecolor=color_grid[row, col]) ax.add_patch(rect) ax.text(col + 0.5, nrows - row - 1 + 0.4, color_grid[row, col], color="white", ha='center', va='center', fontsize=10) ax.text(col + 0.5, nrows - row - 1 + 0.6, color_grid[row, col], color="black", ha='center', va='center', fontsize=10) ax.set_xlim(0, ncols) ax.set_ylim(0, nrows) plt.gca().set_aspect('equal', adjustable='box') plt.show()
websocketを使って保存するPythonコードは公開されているので、多少の変更を加えるだけで実用レベルに達する。
main部分を改造して、bmpファイルではなくpngファイル形式で、ファイル名は 日時.png
で保存するようにした。
def main(): global remote_ip global port global count import cv2 import numpy as np from datetime import datetime #Open a file file_name = datetime.now().strftime("%Y-%m%d_%H%M%S.png") # Body: Open a socket, query the screen dump, save and close s = SocketConnect() qStr = SocketQuery(s, b'SCDP') #Request screen image print(len(qStr)) image = cv2.imdecode(np.frombuffer(qStr, dtype=np.uint8), cv2.IMREAD_UNCHANGED) cv2.imwrite(file_name, image) SocketClose(s) sys.exit
起動オプションに -dpi 100
を追加する。
起動オプション全体
"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow -nolisten inet6 -dpi 100
以下のようなシェルスクリプトを cron で定期的に実行すれば良い。
#!/bin/bash export HOME=/home/physics export PATH=/usr/bin:/bin git config --global user.email "physics@physics" git config --global user.name "physics" cd /home/physics/target # 差分がないか確認 if git diff --quiet; then echo "No changes detected." else # 全ての変更をステージ git add . # 現在の日時を取得してフォーマット current_datetime=$(date +"%Y-%m-%d %H:%M:%S") # コミットメッセージに日時を追加してコミット git commit -m "$current_datetime update" echo "Changes staged and committed with message: '$current_datetime update'" fi