【python】pythonで画面キャプチャソフトを作ってみた

導入

画面の色を検知するソフトを作成してみたかったので、Pythonで画面キャプチャを作ってみました。

今回作ったもの

FPS=60で動かしたものです。

キャプチャした画面を更にキャプチャしているので、ミルフィーユのようになっています。

録画しながらのせいか右端に残像が残っていますが、普段は発生しません。

使用するライブラリ

  • tkinter (ウィンドウ作成の為)
  • Pillow (画像データの変換処理の為)
  • dxcam (高速でスクショをする為)

コード

import tkinter
import dxcam
from PIL import Image, ImageTk

SCREEN_WIDTH = 1920
SCREEN_HEIGHT = 1080
FPS = 60

root = tkinter.Tk()
root.geometry(f"{SCREEN_WIDTH}x{SCREEN_HEIGHT}")
root.title("画面キャプチャ")

canvas = tkinter.Canvas(root, width=SCREEN_WIDTH, height=SCREEN_HEIGHT, background="#FFF")
canvas.pack()

camera = dxcam.create()
camera.start(target_fps=FPS)

def update():
    global tk_image
    frame = camera.get_latest_frame()
    image = Image.fromarray(frame)
    tk_image = ImageTk.PhotoImage(image)
    canvas.create_image(SCREEN_WIDTH/2,SCREEN_HEIGHT/2,image=tk_image)
    root.after(int(1000/FPS), update)

update()
root.mainloop()

コード解説(オリジナル部分)

SCREEN_WIDTH、SCREEN_HEIGHT:スクリーンの幅と高さです。

FPS:一秒あたり何回描画するか。FPSを高くしてもcamera.get_latest_frame()でのスクショが追い付かないので、実際には指定した値よりも低くなります。

コード解説(tkinter)

tkinter.Tk():ウィンドウを作成します。

root.geometry(f”{SCREEN_WIDTH}x{SCREEN_HEIGHT}”):ウィンドウサイズを設定。このコードを書かない場合、ウィンドウの大きさはスクリーンの大きさになるので、今回は無意味です。

root.title(“画面キャプチャ”):ウィンドウのタイトル(名前)を「画面キャプチャ」にします。

tkinter.Canvas(root, width=SCREEN_WIDTH, height=SCREEN_HEIGHT, background=”#FFF”):ウィンドウに画像を描画する為のキャンバスを作成します。背景色は白です。

canvas.pack():キャンバスを配置します。このコードが無い場合、キャンバスは表示されません。

global tk_image:tk_imageがガベージコレクタによって廃棄されないようにする為にグローバル変数にする。このコードが無いと、tk_imageが即座に捨てられてしまい、キャンバスには何も表示されなくなります。

canvas.create_image(x,y,image=tk_image):x,yには画像の中心座標を入れます。

root.after(int(1000/FPS), update):int(1000/FPS)ミリ秒あとに、update関数を呼びます。第一引数は整数にする必要があります。

コード解説(Pillow)

image = Image.fromarray(frame):numpyのndarrayをPillowのImageオブジェクトに変換します。

コード解説(dxcam)

dxcam.create():DXCameraインスタンスを作成します。

camera.start(target_fps=FPS):指定したFPSでスクショを撮る作業をスタートします。

camera.get_latest_frame():新しいスクショが撮られるまで待ち、スクショが撮られたら値を返します。返り値の型は、numpyのndarrayです。

【Quaver】初心者の為の基本操作まとめ

導入

Quaverという音ゲーの基本操作を解説します。

目次

曲のダウンロード

一番左上にあるメニューの「MAPS」というところをクリックすると、公開されている曲の一覧を見ることができます。

引きたい曲を2回クリックすると、曲のダウンロードが始まります。その後、「HOME」→「SINGLE PLAYER」を選択するとその曲を弾くことができます。

演奏設定

画面下のメニューにある「MODIFIERS」をクリックすると、曲の演奏設定を開くことができます。

SPEEDは0.05倍刻みに0.5倍から2倍まで曲の速度を変更することができます。(太鼓の達人などの倍速と違い、譜面の速度だけでなく、曲の速度も変更されます)

JUDGEMENT WINDOWSノーツの判定の範囲を変更できます。(ただし、判定を「Standard」以外にすると、ランクスコアの提出ができなくなります)

AUTO PLAYをONにすると、自動演奏してくれます。

NO FAILをONにすると、曲の途中でHealthが0になっても、曲が中断されなくなります。(Quaverではノーツを叩き損ねるとHealthが減少し、0になると曲が中断されるというシステムになっています)

INVERSEは空白をノーツにして、ノーツを空白にします。

RANDAMIZEはノーツの位置がランダムで横に移動します。

曲のオフセット調整

曲を演奏し終えたあと、左下のメニューのFIX OFFSETをクリックして曲のオフセットを調節することができます。直前に自分がプレイした演奏に基づいて、オフセットを自動で調節してくれます。

「+5ms」は「ノーツの流れてくるタイミングを5ミリ秒遅らす」、「-5ms」は「ノーツの流れてくるタイミング5ミリ秒早める」という意味です。

キー設定

OPTIONS」→「INPUT」からどのキーでノーツを叩くかを設定することができます。