42#include "vpPylonGrabberUsb.h"
46#include <visp3/core/vpException.h>
47#include <visp3/core/vpTime.h>
69 Pylon::CTlFactory &TlFactory = Pylon::CTlFactory::GetInstance();
70 Pylon::DeviceInfoList_t lstDevices;
71 Pylon::DeviceInfoList_t filter;
72 Pylon::CBaslerUsbDeviceInfo usb_devinfo;
73 filter.push_back(usb_devinfo);
74 TlFactory.EnumerateDevices(lstDevices, filter);
76 m_numCameras = lstDevices.size();
89 Pylon::CDeviceInfo deviceInfo = m_camera.GetDeviceInfo();
91 GenApi::INodeMap &control = m_camera.GetNodeMap();
93 GenApi::CIntegerPtr widthMax = control.GetNode(
"WidthMax");
94 GenApi::CIntegerPtr heightMax = control.GetNode(
"HeightMax");
96 os <<
"Camera information: " << std::endl;
97 os <<
" Serial number : " << deviceInfo.GetSerialNumber() << std::endl;
98 os <<
" Camera model : " << deviceInfo.GetModelName() << std::endl;
99 os <<
" Camera vendor : " << deviceInfo.GetVendorName() << std::endl;
100 os <<
" Resolution : " << widthMax->GetValue() <<
"x" << heightMax->GetValue() << std::endl;
101 os <<
" Firmware version : " << deviceInfo.GetDeviceVersion() << std::endl;
116 if (m_connected ==
true) {
134 float frame_rate = m_camera.AcquisitionFrameRate.GetValue();
148 if (GenApi::IsReadable(m_camera.Gain))
149 return m_camera.Gain.GetValue();
169 if (GenApi::IsReadable(m_camera.BlackLevel))
170 return m_camera.BlackLevel.GetValue();
190 if (GenApi::IsReadable(m_camera.ExposureTime))
191 return m_camera.ExposureTime.GetValue() * 0.001;
206 float gamma = m_camera.Gamma.GetValue();
220 if (index >= m_numCameras) {
222 index, m_numCameras));
225 Pylon::CTlFactory &TlFactory = Pylon::CTlFactory::GetInstance();
226 Pylon::DeviceInfoList_t lstDevices;
227 Pylon::DeviceInfoList_t filter;
228 Pylon::CBaslerUsbDeviceInfo usb_devinfo;
229 filter.push_back(usb_devinfo);
230 TlFactory.EnumerateDevices(lstDevices, filter);
232 std::ostringstream os;
233 os << lstDevices[index].GetSerialNumber();
253 m_camera.UserSetLoad.Execute();
255 success = m_camera.UserSetLoad.IsDone();
271 Basler_UsbCameraParams::UserSetDefaultEnums user_set = m_camera.UserSetDefault.GetValue();
274 case Basler_UsbCameraParams::UserSetDefault_Default:
277 case Basler_UsbCameraParams::UserSetDefault_UserSet1:
280 case Basler_UsbCameraParams::UserSetDefault_UserSet2:
283 case Basler_UsbCameraParams::UserSetDefault_UserSet3:
309 if (index >= m_numCameras) {
311 index, m_numCameras));
326 for (
unsigned int i = 0; i < m_numCameras; i++) {
346 m_camera.AcquisitionFrameRate.SetValue(frame_rate);
348 return m_camera.AcquisitionFrameRate.GetValue();
369 m_camera.GainAuto.SetValue(Basler_UsbCameraParams::GainAuto_Continuous);
371 m_camera.GainAuto.SetValue(Basler_UsbCameraParams::GainAuto_Off);
373 if (GenApi::IsWritable(m_camera.Gain)) {
374 m_camera.Gain.SetValue(gain_value);
375 return m_camera.Gain.GetValue();
399 if (GenApi::IsWritable(m_camera.BlackLevel)) {
400 m_camera.BlackLevel.SetValue(blacklevel_value);
401 return m_camera.BlackLevel.GetValue();
429 m_camera.ExposureMode.SetValue(Basler_UsbCameraParams::ExposureMode_Timed);
431 m_camera.ExposureMode.SetValue(Basler_UsbCameraParams::ExposureMode_TriggerWidth);
434 m_camera.ExposureAuto.SetValue(Basler_UsbCameraParams::ExposureAuto_Continuous);
436 m_camera.ExposureAuto.SetValue(Basler_UsbCameraParams::ExposureAuto_Off);
438 if (GenApi::IsWritable(m_camera.ExposureTime)) {
439 m_camera.ExposureTime.SetValue(exposure_value * 1000);
440 return m_camera.ExposureTime.GetValue() * 0.001;
462 if (GenApi::IsWritable(m_camera.Gamma)) {
464 m_camera.Gamma.SetValue(gamma_value);
466 m_camera.Gamma.SetValue(1);
467 return m_camera.Gamma.GetValue();
491 m_camera.UserSetSave.Execute();
493 success = m_camera.UserSetSave.IsDone();
496 if (success && set_default)
517 m_camera.UserSetDefault.SetValue(Basler_UsbCameraParams::UserSetDefault_Default);
521 m_camera.UserSetDefault.SetValue(Basler_UsbCameraParams::UserSetDefault_UserSet1);
525 m_camera.UserSetDefault.SetValue(Basler_UsbCameraParams::UserSetDefault_UserSet2);
529 m_camera.UserSetDefault.SetValue(Basler_UsbCameraParams::UserSetDefault_UserSet3);
546 if (!m_camera.IsGrabbing()) {
547 m_camera.StartGrabbing(1);
549 if (m_connected && m_camera.IsGrabbing())
562 if (m_camera.IsGrabbing()) {
563 m_camera.StopGrabbing();
565 if (m_connected && m_camera.IsGrabbing())
578 if (m_connected ==
false) {
580 if (m_numCameras == 0) {
584 if (!m_camera.IsPylonDeviceAttached()) {
585 Pylon::CTlFactory &TlFactory = Pylon::CTlFactory::GetInstance();
586 Pylon::DeviceInfoList_t lstDevices;
587 Pylon::DeviceInfoList_t filter;
588 Pylon::CBaslerUsbDeviceInfo usb_devinfo;
589 filter.push_back(usb_devinfo);
590 TlFactory.EnumerateDevices(lstDevices, filter);
592 m_camera.Attach(TlFactory.CreateDevice(lstDevices[m_index]));
598 if (m_connected && m_camera.IsGrabbing())
611 if (m_connected ==
true) {
615 if (m_connected && m_camera.IsGrabbing())
644 Pylon::CGrabResultPtr grabResult;
646 if (!m_camera.RetrieveResult(2000, grabResult)) {
651 if (grabResult->GrabSucceeded()) {
652 height = grabResult->GetHeight();
653 width = grabResult->GetWidth();
656 Pylon::CImageFormatConverter imageConvert;
657 imageConvert.OutputPixelFormat = Pylon::PixelType_Mono8;
658 imageConvert.OutputPaddingX = 0;
660 imageConvert.Convert(I.bitmap,
sizeof(
unsigned char) *
width *
height, (Pylon::IImage &)grabResult);
673 Pylon::CGrabResultPtr grabResult;
675 if (!m_camera.RetrieveResult(2000, grabResult)) {
680 if (grabResult->GrabSucceeded()) {
681 height = grabResult->GetHeight();
682 width = grabResult->GetWidth();
685 Pylon::CImageFormatConverter imageConvert;
686 imageConvert.OutputPixelFormat = Pylon::PixelType_BGRA8packed;
687 imageConvert.OutputPaddingX = 0;
689 Pylon::CPylonImage destImage;
690 imageConvert.Convert(destImage, (Pylon::IImage &)grabResult);
691 Pylon::SBGRA8Pixel *pixel = (Pylon::SBGRA8Pixel *)destImage.GetBuffer();
692 for (
unsigned int i = 0; i <
height; i++) {
693 for (
unsigned int j = 0; j <
width; j++) {
694 unsigned int p_index = i *
width + j;
695 I[i][j].R = pixel[p_index].R;
696 I[i][j].G = pixel[p_index].G;
697 I[i][j].B = pixel[p_index].B;
698 I[i][j].A = pixel[p_index].A;
755 m_camera.UserSetSelector.SetValue(Basler_UsbCameraParams::UserSetSelector_Default);
759 m_camera.UserSetSelector.SetValue(Basler_UsbCameraParams::UserSetSelector_UserSet1);
763 m_camera.UserSetSelector.SetValue(Basler_UsbCameraParams::UserSetSelector_UserSet2);
767 m_camera.UserSetSelector.SetValue(Basler_UsbCameraParams::UserSetSelector_UserSet3);
798void dummy_vpPylonGrabberUsb() { }
error that can be emitted by ViSP classes.
@ badValue
Used to indicate that a value is not in the allowed range.
@ notImplementedError
Not implemented.
unsigned int height
Number of rows in the image.
bool init
Set to true if the frame grabber has been initialized.
unsigned int width
Number of columns in the image.
Definition of the vpImage class member functions.
bool loadUserSet(UserSetName user_set)
Loads the selected configuration into the camera's volatile memory and makes it the active configurat...
vpPylonGrabber & operator>>(vpImage< unsigned char > &I)
unsigned int getNumCameras()
float setBlackLevel(float blacklevel_value=0)
Pylon::CInstantCamera * getCameraHandler()
std::ostream & getCameraInfo(std::ostream &os)
float setFrameRate(float frame_rate)
float setGamma(bool gamma_on, float gamma_value=1)
bool setUserSetDefault(UserSetName user_set)
Sets the configuration set to be used as the default startup set.
UserSetName getUserSetDefault()
Gets the configuration set being used as the default startup set.
void close()
Stop active camera capturing images and disconnect the active camera.
bool selectUserSet(UserSetName user_set)
Selects the configuration set to load, save, or configure.
void setCameraIndex(unsigned int index)
bool saveUserSet(UserSetName user_set, bool set_default=false)
Saves the current active configuration set into the selected user set.
std::string getCameraSerial(unsigned int index)
void acquire(vpImage< unsigned char > &I)
virtual ~vpPylonGrabberUsb()
float setExposure(bool exposure_on, bool exposure_auto, float exposure_value=0)
void setCameraSerial(const std::string &serial)
float setGain(bool gain_auto, float gain_value=0)
@ USERSET_DEFAULT
The default user set.
@ USERSET_UNKNOWN
User set not supported.
@ USERSET_USERSET1
User set 1.
@ USERSET_USERSET3
User set 3.
@ USERSET_USERSET2
User set 2.
VISP_EXPORT int wait(double t0, double t)