forked from ZainUlMustafa/Basler-PyPylon-Control
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaware_hw_cam_control.py
116 lines (98 loc) · 2.92 KB
/
aware_hw_cam_control.py
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import hashlib
import json
from operator import itemgetter
import os
import shutil
import signal
import time
from pypylon import pylon
import cv2
import numpy as np
import base64
import multiprocessing
configDoc = './configs/config.json'
settingDoc = './configs/setting/ahccon.json'
statusDoc = './configs/status/ahccon.json'
showLogs = False
pid = None
counter = 0
prevSetting = None
configData = None
def main():
global pid; pid = os.getpid()
camIds = ["22730681"]
cams = []
cams = fetchCameras(camIds)
converter = bgrConv()
cam = cams[0]
cameraToPlay = pylon.InstantCamera(pylon.TlFactory.GetInstance().CreateDevice(cam))
cameraToPlay.Open()
cameraToPlay.Gain.SetValue(0)
cameraToPlay.TriggerSelector.SetValue("FrameStart")
cameraToPlay.TriggerMode.SetValue("On")
cameraToPlay.TriggerSource.SetValue('Line1')
cameraToPlay.TriggerActivation.SetValue('RisingEdge')
cameraToPlay.StartGrabbing(pylon.GrabStrategy_LatestImageOnly)
print(cameraToPlay)
grabbingCount = 0
while cameraToPlay.IsGrabbing():
try:
startTime = time.time()
grabResult = cameraToPlay.RetrieveResult(200, pylon.TimeoutHandling_ThrowException)
if grabResult.GrabSucceeded():
image = converter.Convert(grabResult)
img = image.GetArray()
cv2.imshow('right', cv2.resize(img, (640*1,480*1)))
if cv2.waitKey(1) & 0xff == ord('q'):
os.kill(pid, signal.SIGTERM)
break
#endif
grabbingCount += 1
#endif
grabResult.Release()
endTime = time.time()
print(f"Total time taken this loop: {(endTime - startTime)*1000} ms")
except:
cv2.destroyAllWindows()
print("Retrying...")
#endtry
#endwhile
# Releasing the resource
cameraToPlay.StopGrabbing()
cv2.destroyAllWindows()
#enddef
def fetchCameras(camIds: list):
cams = []
for camId in camIds:
for cam in pylon.TlFactory.GetInstance().EnumerateDevices():
if cam.GetSerialNumber() == camId:
cams.append(cam)
#endif
#endfor
#endfor
return cams
#enddef
def bgrConv():
converter = pylon.ImageFormatConverter()
converter.OutputPixelFormat = pylon.PixelType_BGR8packed
converter.OutputBitAlignment = pylon.OutputBitAlignment_MsbAligned
return converter
#enddef
def convertToB64(img):
_, imArr = cv2.imencode('.png', img) # imArr: image in Numpy one-dim array format.
imBytes = imArr.tobytes()
imB64 = base64.b64encode(imBytes)
return imB64.decode("ascii")
#enddef
def currentServertime():
return round(time.time() * 1000)
#enddef
def numberOfFiles(dir):
list = os.listdir(dir)
numberFiles = len(list)
return numberFiles
#enddef
if __name__ == '__main__':
cv2.destroyAllWindows()
main()
#endif