-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Lab Computer 19716
committed
Sep 11, 2024
1 parent
897abeb
commit b68520d
Showing
9 changed files
with
520 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
3.12 |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
import pypylon.pylon as pylon | ||
import cv2 | ||
import numpy as np | ||
import matplotlib as mpl | ||
|
||
tlf = pylon.TlFactory.GetInstance() | ||
|
||
devices = tlf.EnumerateDevices() | ||
|
||
# for device in devices: | ||
# print(f"Model name: {device.GetModelName()} Serial Number: {device.GetSerialNumber()}") | ||
|
||
nir_devices = [device for device in devices if "NIR" in device.GetModelName()] | ||
|
||
cam_array = pylon.InstantCameraArray(len(nir_devices)) | ||
|
||
for index, cam in enumerate(cam_array): | ||
cam.Attach(tlf.CreateDevice(nir_devices[index])) | ||
|
||
cam_array.Open() | ||
|
||
# store a unique number for each camera to identify the incoming images | ||
for index, cam in enumerate(cam_array): | ||
camera_serial = cam.DeviceInfo.GetSerialNumber() | ||
print(f"set context {index} for camera {camera_serial}") | ||
cam.SetCameraContext(index) | ||
|
||
# set the exposure time for each camera | ||
# for idx, cam in enumerate(cam_array): | ||
# camera_serial = cam.DeviceInfo.GetSerialNumber() | ||
# print(f"set Exposuretime {idx} for camera {camera_serial}") | ||
# cam.ExposureTimeRaw = 10000 | ||
|
||
frames_to_grab = 10 | ||
|
||
frame_counts = [0] * len(nir_devices) | ||
|
||
cam_array.StartGrabbing() | ||
while True: | ||
with cam_array.RetrieveResult(1000) as result: | ||
if result.GrabSucceeded(): | ||
image_number = result.ImageNumber | ||
cam_id = result.GetCameraContext() | ||
frame_counts[cam_id] = image_number | ||
print(f"cam #{cam_id} image #{image_number}") | ||
|
||
# do something with the image .... | ||
|
||
if min(frame_counts) >= frames_to_grab: | ||
print( f"all cameras have acquired {frames_to_grab} frames") | ||
break | ||
|
||
|
||
cam_array.StopGrabbing() | ||
|
||
print(frame_counts) | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
import pypylon.pylon as pylon | ||
import cv2 | ||
import numpy as np | ||
import matplotlib as mpl | ||
|
||
tlf = pylon.TlFactory.GetInstance() | ||
|
||
devices = tlf.EnumerateDevices() | ||
|
||
# for device in devices: | ||
# print(f"Model name: {device.GetModelName()} Serial Number: {device.GetSerialNumber()}") | ||
|
||
nir_devices = [device for device in devices if "NIR" in device.GetModelName()] | ||
|
||
print("NIR devices:") | ||
for device in nir_devices: | ||
print(f"Model name: {device.GetModelName()} Serial Number: {device.GetSerialNumber()}") | ||
|
||
cam = pylon.InstantCamera(tlf.CreateDevice(device)) | ||
|
||
cam.Open() | ||
|
||
result = cam.GrabOne(1000) | ||
image = result.Array | ||
|
||
cv2.imshow(device.GetSerialNumber(), image) | ||
cv2.waitKey(0) | ||
|
||
cam.Close() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
from pypylon import pylon | ||
import cv2 | ||
|
||
camera = pylon.InstantCamera(pylon.TlFactory.GetInstance().CreateFirstDevice()) | ||
camera.Open() | ||
|
||
# demonstrate some feature access | ||
# new_width = camera.Width.Value - camera.Width.Inc | ||
# if new_width >= camera.Width.Min: | ||
# camera.Width.Value = new_width | ||
|
||
numberOfImagesToGrab = 60 | ||
camera.StartGrabbingMax(numberOfImagesToGrab) | ||
|
||
frame = -1 | ||
|
||
while camera.IsGrabbing(): | ||
grabResult = camera.RetrieveResult(5000, pylon.TimeoutHandling_ThrowException) | ||
frame += 1 | ||
|
||
if grabResult.GrabSucceeded(): | ||
# Access the image data. | ||
print("SizeX: ", grabResult.Width) | ||
print("SizeY: ", grabResult.Height) | ||
print(f"Current frame: {frame}") | ||
img = grabResult.Array | ||
cv2.imshow(f"frame", img) | ||
|
||
if cv2.waitKey(67) & 0xFF == ord("q"): | ||
break | ||
|
||
|
||
grabResult.Release() | ||
|
||
cv2.destroyAllWindows() | ||
camera.Close() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
import pypylon.pylon as pylon | ||
import cv2 | ||
import numpy as np | ||
import matplotlib as mpl | ||
|
||
tlf = pylon.TlFactory.GetInstance() | ||
|
||
devices = tlf.EnumerateDevices() | ||
|
||
# for device in devices: | ||
# print(f"Model name: {device.GetModelName()} Serial Number: {device.GetSerialNumber()}") | ||
|
||
nir_devices = [device for device in devices if "NIR" in device.GetModelName()] | ||
|
||
cam_array = pylon.InstantCameraArray(len(nir_devices)) | ||
|
||
for index, cam in enumerate(cam_array): | ||
cam.Attach(tlf.CreateDevice(nir_devices[index])) | ||
|
||
cam_array.Open() | ||
|
||
# store a unique number for each camera to identify the incoming images | ||
for index, cam in enumerate(cam_array): | ||
camera_serial = cam.DeviceInfo.GetSerialNumber() | ||
print(f"set context {index} for camera {camera_serial}") | ||
cam.SetCameraContext(index) | ||
|
||
# set the exposure time for each camera | ||
# for idx, cam in enumerate(cam_array): | ||
# camera_serial = cam.DeviceInfo.GetSerialNumber() | ||
# print(f"set Exposuretime {idx} for camera {camera_serial}") | ||
# cam.ExposureTimeRaw = 10000 | ||
|
||
frames_to_grab = 10 | ||
|
||
frame_counts = [0] * len(nir_devices) | ||
|
||
cam_array.StartGrabbing() | ||
while True: | ||
with cam_array.RetrieveResult(1000) as result: | ||
if result.GrabSucceeded(): | ||
image_number = result.ImageNumber | ||
cam_id = result.GetCameraContext() | ||
frame_counts[cam_id] = image_number | ||
print(f"cam #{cam_id} image #{image_number}") | ||
|
||
# do something with the image .... | ||
|
||
if min(frame_counts) >= frames_to_grab: | ||
print( f"all cameras have acquired {frames_to_grab} frames") | ||
break | ||
|
||
|
||
cam_array.StopGrabbing() | ||
|
||
print(frame_counts) | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
from pypylon import pylon | ||
|
||
camera = pylon.InstantCamera(pylon.TlFactory.GetInstance().CreateFirstDevice()) | ||
camera.Open() | ||
|
||
# demonstrate some feature access | ||
new_width = camera.Width.Value - camera.Width.Inc | ||
if new_width >= camera.Width.Min: | ||
camera.Width.Value = new_width | ||
|
||
numberOfImagesToGrab = 100 | ||
camera.StartGrabbingMax(numberOfImagesToGrab) | ||
|
||
while camera.IsGrabbing(): | ||
grabResult = camera.RetrieveResult(timeoutMs = 5000, timeoutHandling=pylon.TimeoutHandling_ThrowException) | ||
|
||
if grabResult.GrabSucceeded(): | ||
# Access the image data. | ||
print("SizeX: ", grabResult.Width) | ||
print("SizeY: ", grabResult.Height) | ||
img = grabResult.Array | ||
print("Gray value of first pixel: ", img[0, 0]) | ||
|
||
grabResult.Release() | ||
camera.Close() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
[project] | ||
name = "cameras" | ||
version = "0.1.0" | ||
description = "Add your description here" | ||
readme = "README.md" | ||
requires-python = ">=3.12" | ||
dependencies = [ | ||
"matplotlib>=3.9.2", | ||
"numpy>=2.1.1", | ||
"opencv-python>=4.10.0.84", | ||
"pypylon>=4.0.0", | ||
] |
Oops, something went wrong.