でも、めげたときは
・まー何とかなるさと楽天的に
・他の良いことをクローズアップして自信を回復
・最後に、これを機会にを多角的に考える
どうかな~
◆パイソンで、ウインドウズ画面をキャプチャするものを作成しました。
ついでに再生もつくりました。
pythonで動画を表示します。
使い方
play.py 動画ファイル
※cv2,npを使いますので、インストールしてください
※ cv2.waitKey(20)で再生スピードを調整
play.py
#-*- coding:utf-8 -*-
import cv2
import numpy as np
import sys
width = 1280
height = 720
fname = sys.argv[1]
#fname = "capture5.mov"
def main():
# 動画の読み込み
cap = cv2.VideoCapture( fname)
# 動画終了まで繰り返し
while(cap.isOpened()):
# フレームを取得
ret, frame = cap.read()
if ret != True:
break
#frame = cv2.resize(frame, dsize=(width/2, height/2))
# フレームを表示
cv2.imshow("Flame", frame)
cv2.waitKey(20)
# qキーが押されたら途中終了
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
if __name__ == "__main__":
main()
pythonでPC上の画面をキャプチャします。
ウインドウズ版になります。
かなり、ソースが汚いですがごめんなさい。
使い方
capture.py 動画ファイル名( cap.mov等)
※何かキー入力で終了です
※importしているファイルは、インストールされていなければ
してください。
capture.py
# -*- coding: utf-8 -*-
import sys
import win32gui
import win32ui
import win32con
from PIL import Image
import cv2
import numpy as np
SCREEN_WIDTH = 2160
SCREEN_HEIGHT = 1440
SCREEN_SCALING_FACTOR = 1.5
""" スクリーンショット撮ってそれを(Pillow.Imageで)返す """
window = win32gui.GetDesktopWindow()
window_dc = win32ui.CreateDCFromHandle(win32gui.GetWindowDC(window))
compatible_dc = window_dc.CreateCompatibleDC()
width = 1280
height = 720
sx = 10
sy = 10
# Define the codec and create VideoWriter object
#fourcc = cv2.VideoWriter_fourcc(*'XVID')
#fourcc = cv2.cv.CV_FOURCC(*'XVID')
fourcc = cv2.cv.CV_FOURCC(*"H264")
#out = cv2.VideoWriter('video.avi', fourcc, 20.0, (width, height))
#out = cv2.VideoWriter('output123.mp4',0x00000021,15.0,(1280,360))
#out = cv2.VideoWriter('output.avi',fourcc, 20.0, (width,height))
fname = sys.argv[1]
#fname = "cap6.mov"
out = cv2.VideoWriter( fname, cv2.cv.CV_FOURCC(*'mp4v'),25, (width, height))
#out = cv2.VideoWriter('capture123.mp4', cv2.cv.CV_FOURCC(*'mp4v'),30, (width, height))
bmp = win32ui.CreateBitmap()
bmp.CreateCompatibleBitmap(window_dc, width, height)
compatible_dc.SelectObject(bmp)
def screenshot():
compatible_dc.BitBlt((0, 0), (width, height), window_dc, (sx, sy), win32con.SRCCOPY)
curFlags, curH, (curX, curY) = win32gui.GetCursorInfo()
compatible_dc.DrawIcon((curX, curY), curH)
img = Image.frombuffer('RGB', (width, height), bmp.GetBitmapBits(True), 'raw', 'BGRX', 0, 1)
return img
#img.show()
def main():
while(1):
#im = ImageGrab.grab((90, 90, 800, 400)) # デスクトップの始点(0,0),横400, 縦300の矩形部分をキャプチャ
im =screenshot()
im = np.asarray(im) # OpenCVで扱うためにNumpy配列に変換
im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) # BGR→RGB
out.write(im)
im2 = cv2.resize(im, dsize=(width/2, height/2))
cv2.imshow("desktop", im2) # 画面表示
# write the flipped frame
if cv2.waitKey(1) > 0: # キー入力があれば終了
out.write(im)
cv2.destroyAllWindows()
break
if __name__ == "__main__":
main()
0 件のコメント:
コメントを投稿