aboutsummaryrefslogtreecommitdiff
path: root/pyvimba/tests/opencv_example.py
blob: 36b5108f92aff8fee4930f37adf808667fa23af0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
from vimba import *
import numpy as np
import cv2
import time

#very crude example, assumes your camera is PixelMode = BAYERRG8

# start Vimba
vimba = Vimba()
vimba.startup()

# get system object
system = vimba.getSystem()

# list available cameras (after enabling discovery for GigE cameras)
if system.GeVTLIsPresent:
    system.runFeatureCommand("GeVDiscoveryAllOnce")
    time.sleep(0.2)
cameraIds = vimba.getCameraIds()
for cameraId in cameraIds:
    print 'Camera ID:', cameraId

# get and open a camera
camera0 = vimba.getCamera(cameraIds[0])
camera0.openCamera()

# list camera features
cameraFeatureNames = camera0.getFeatureNames()
for name in cameraFeatureNames:
    print 'Camera feature:', name

# read info of a camera feature
#featureInfo = camera0.getFeatureInfo('AcquisitionMode')
#for field in featInfo.getFieldNames():
#    print field, '--', getattr(featInfo, field)

# get the value of a feature
print camera0.AcquisitionMode

# set the value of a feature
camera0.AcquisitionMode = 'SingleFrame'

# create new frames for the camera
frame0 = camera0.getFrame()    # creates a frame
frame1 = camera0.getFrame()    # creates a second frame

# announce frame
frame0.announceFrame()

# capture a camera image
count = 0
while count < 10:
    camera0.startCapture()
    frame0.queueFrameCapture()
    camera0.runFeatureCommand('AcquisitionStart')
    camera0.runFeatureCommand('AcquisitionStop')
    frame0.waitFrameCapture()
    
    # get image data...
    imgData = frame0.getBufferByteData()
    
    moreUsefulImgData = np.ndarray(buffer = frame0.getBufferByteData(),
                                   dtype = np.uint8,
                                   shape = (frame0.height,
                                            frame0.width,
                                            1))
    rgb = cv2.cvtColor(moreUsefulImgData, cv2.COLOR_BAYER_RG2RGB)
    cv2.imwrite('foo{}.png'.format(count), rgb)
    print "image {} saved".format(count)
    count += 1
    camera0.endCapture()
# clean up after capture
camera0.revokeAllFrames()

# close camera
camera0.closeCamera()

# shutdown Vimba
vimba.shutdown()