主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

スポンサーサイト

                
tags:
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

pythonでのスクリーンショットの撮り方 スクリーンキャプチャ

                
tags: python
PIL
>>> import ImageGrab
>>> hoge=ImageGrab.grab((x, y, width, height))
>>> hoge.save("insomnia.png", "png")

GTK
>>>import gtk
>>>pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, width, height)
>>>pixbuf.get_from_drawable(root, gtk.gdk.colormap_get_system(), x, y, x0, y0, w, h)
>>>pixbuf.save("insomnia.png", "png")
x0,y0:ペーストを受ける側のどの座標にペーストするか



それぞれiplimageへの変換スクリプトを書いて、タイム計測をしてみた。
**************************************
import time
import pyopencv
import ImageGrab
import cv
import gtk

x=200
y=200
width=512
height=400

root = gtk.gdk.get_default_root_window()
for k in range(5):
  cou=0
   hoge=time.time()
   while cou<20:
     pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, width, height)
     pixbuf.get_from_drawable(root, gtk.gdk.colormap_get_system(), x, y, 0, 0, width, height)
     mat=pyopencv.interfaces.cvCreateMatFromGtkPixbuf(pixbuf)
     cv_im = cv.CreateImageHeader((mat.cols,mat.rows),cv.IPL_DEPTH_8U,3)
     cv.SetData(cv_im, mat.ndarray.tostring(), 3*mat.cols)
     cou += 1
   print 'gtkdraw %f[s]' % (time.time()-hoge)

  cou=0
   hoge=time.time()
   while cou<20:
     hage=ImageGrab.grab((x,y,width,height))
     cv_im2 = cv.CreateImageHeader(hage.size, cv.IPL_DEPTH_8U, 3)
     cv.SetData(cv_im2, hage.tostring())
     cou +=1
   print 'ImageGrab %f[s]' % (time.time()-hoge)

******************************************
結果
gtkdraw 0.719000[s]
ImageGrab 2.828000[s]
gtkdraw 0.719000[s]
ImageGrab 2.938000[s]
gtkdraw 0.719000[s]
ImageGrab 2.875000[s]
gtkdraw 0.734000[s]
ImageGrab 2.859000[s]
gtkdraw 0.719000[s]
ImageGrab 2.906000[s]
******************************************
gtkを使うことに決めた。
キャプチャだけでもgtkでは0.0x[s]、ImageGrabは0.x[s]と差が開いていた。

            

コメントの投稿

非公開コメント

プロフィール

hMatoba

Author:hMatoba
Github

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。