首页 > 代码库 > Python 摄像头截图

Python 摄像头截图

先容哥叹息一句,此奥~,这什么g8情况,没头脑的装了将近3g的OpenCV,结果没啥用。。。

入题!!环境为Python2.7

严格按照一下步骤操作,必成功:

所需软件如下:

VideoCapture:  http://videocapture.sourceforge.net/VideoCapture-0.9-5.zip

MyEclipse 插件PyDev: http://ncu.dl.sourceforge.net/project/pydev/pydev/PyDev%202.7.1/PyDev%202.7.1.zip

PIL : http://effbot.org/media/downloads/PIL-1.1.7.win32-py2.7.exe

1.      VideoCapture解压后,找到Python27,把里面的东西复制到自己安装Python对应目录中。建议把Python27外面的src tools啥的只要对应的都复制过去。


2.      PIL直接安装即可

3.      PyDev解压后直接复制到MyEclipse中的dropins,这里的环境配置网上一抓一大把。

环境准备完成,代码如下:

 

fromVideoCapture import Device

importtime, string

interval= 2

 

cam =Device(devnum=0, showVideoWindow=0)

 

#cam.setResolution(648,480)

cam.saveSnapshot(‘image.jpg‘,timestamp=3, boldfont=1, quality=75)

 

i = 0

quant =interval * .1

starttime= time.time()

while 1:

    lasttime = now = int((time.time() -starttime) / interval)

    print i

    cam.saveSnapshot(‘image.jpg‘, timestamp=3,boldfont=1)

 

    i += 1

    while now == lasttime:

        now = int((time.time() - starttime) /interval)

       time.sleep(quant)

直接执行即可。

试运行,哈哈:

 

 

详解及延伸:

对于DEVICE的各项参数解释官档解释如下:

class Device:

    """Create instances of this class which will then representvideo devices.

 

    For the lifetime of the instance, thedevice is blocked, so it can not be

    used by other applications (which is quitenormal Windows behavior).

    If you want to access the device fromanother program, you have to delete

    the instance first (e.g. del cam).

 

    """

    def __init__(self, devnum=0, showVideoWindow=0):

        """devnum: VideoCapture enumerates the available video capture devices

                    on your system.  If you have more than one device, specify

                    the desired one here.  The device number starts from 0.

 

           showVideoWindow: 0 ... do notdisplay a video window (the default)

                            1 ... display avideo window

 

                            Mainly used fordebugging, since the video window

                            can not be closedor moved around.

saveSnapshot的各项参数解释如下:

def saveSnapshot(self, filename, timestamp=0, boldfont=0,textpos=default_textpos, **keywords):

        """Saves a snapshot to theharddisk.

 

        The filetype depends on thefilename extension.  Everything that PIL

        can handle can be specified (foo.jpg,foo.gif, foo.bmp, ...).

 

        filename:   String containing the name of the resultingfile.

 

        timestamp:  see getImage()

 

        boldfont:   see getImage()

 

        textpos:    see getImage()

 

        Additional keyword arguments can begive which are just passed to the

        save() method of the Image class.  For example you can specify the

        compression level of a JPEG image byquality=75 (which is the default

        value anyway).

getImage的各项参数解释如下:

def getImage(self, timestamp=0, boldfont=0, textpos=default_textpos):

        """Returns a PIL Image instance.

 

        timestamp:  0 ... notimestamp (the default)

                    1 ... simple timestamp

                    2 ... timestamp withshadow

                    3 ... timestamp withoutline

 

        boldfont:   0 ... normal font (the default)

                    1 ... bold font

 

        textpos:    The position of thetimestamp can bespecified by a string

                    containing a combination oftwo characters.  One character

                    must be either t or b, theother one either l, c or r.

 

                    t ... top

                    b ... bottom

 

                    l ... left

                    c ... center

                    r ... right

 

                    The default value is ‘bl

自己写的助于理解上述程序的程序:

import time

 

a=2

b=a*.1

i=0

print b

stime = time.time()

print stime

m=2

while m>i:

   lasttime = now = int((time.time()-stime)/a)

   print (‘i is: %s‘) %i

 

   i+=1

   print ‘进入while循环‘

   while now ==lasttime:

       now = int((time.time()-stime)/a)

       print (time.time()-stime)/a

       print (‘now is: %s‘) %now

       print (‘lasttime is: %s‘) %lasttime

       if now ==lasttime:

           print (‘lasttime == now‘)

       else:

           print (‘lasttime 不等于 now‘)

       time.sleep(b)

        print ‘休眠了%s秒‘ %b