Qt + OpenCVред рдирдИ рдЧреАрдЧрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреИрдорд░рд╛ рдПрдХреНрд╕реЗрд╕ рдЗрдВрдЯрд░рдлреЗрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдЬреИрд╕реЗ рд╕реАрд╡реАрд╕реАрдПрдкреНрдпреЛрд░

рдЬреИрд╕рд╛ рдХрд┐ рд╣реЗрдирд░реА VIII рдиреЗ рдЕрдкрдиреА рдЕрдЧрд▓реА рдкрддреНрдиреА рд╕реЗ рдХрд╣рд╛, "рдореИрдВрдиреЗ рдЖрдкрдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдирд╣реАрдВ рдкрдХрдбрд╝рд╛ ..."
рдкреЛрд╕реНрдЯ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ "Qt + OpenCV рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИ ред CvCapture рдХреЗ рд▓рд┐рдП рд░рдирдЯрд╛рдЗрдо рдФрд░ рд╡рд┐рдЬреЗрдЯ (рд╡реАрдбрд┐рдпреЛ рдХреИрдкреНрдЪрд░ рдбрд┐рд╡рд╛рдЗрд╕)ред тАЭ
рдпрджрд┐ рдЖрдк, рдкреНрд░рд┐рдп рдкрд╛рдардХ, рдПрдХ рд╡реАрдбрд┐рдпреЛ рдХреИрдорд░рд╛ рдЦрд░реАрджрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рд╕рдорд░реНрдерди OpenCV рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реИрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЕрдзреНрдпрдпрди рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреНрдпрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рд╣реИ, рдпрд╛ рд╡реЗ рд╕реНрд╡рдпрдВ рдХреНрдпрд╛, рдЕрдЬреНрдЮрд╛рдиреА, рдЦрд░реАрджреЗ рд╣реБрдП рд╣реИрдВред
  1. рдЧрд┐рдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдПрд╕рдбреАрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рдЬреЛ рдЙрддреНрдкрд╛рдж рдХреЗ рд╕рд╛рде рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ рдпрд╛ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдкреНрд▓рд╕!
  2. рдкреНрд░рд▓реЗрдЦрди рдХрдореЛрдмреЗрд╢ рд╕рд╛рд░реНрдердХ рд╣реИред рдлрд┐рд░ рд╕реЗ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА!
  3. рдЗрд╕рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ! рд╡рд╛рд╣ ... рдкреНрд▓рд╕!

рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рд╕реВрдЪреА рдХреЗ рдкреНрд▓рд╕рд╕ рдкрд░ "рднрд╛рдЧреНрдпрд╢рд╛рд▓реА" рдмрди рдЧрдпрд╛, рдЬрд┐рд╕рдореЗрдВ рд╕реНрдорд╛рд░реНрдЯреЗрдХ рдЧрд╛рдЗрдЧрдиреЗрдЯрд┐рдХреНрд╕ GC1921M рдХреИрдорд░рд╛ рдорд┐рд▓рд╛
рдПрд╕рдбреАрдХреЗ рд╡рд┐рдзрд┐рдпрд╛рдВ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рддрд░рд╣ ... рдХреЛрдб рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдмрдВрдж рд╣реИред рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╛ рд╕реНрддрд░ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛
... if (m_selectedDevice->IsConnected()){ m_disconnectAct->setEnabled(true); m_fwUpdateAct->setEnabled(true); } ... 

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рд╢реНрди рд╣реИ, "рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ?", рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдЯрд╛рдЗрдо рдорд╢реАрди рдореЗрдВ рдПрдХ рд╕реЛрд╡рд┐рдпрдд рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдореЗрдВ рднреЗрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВ, рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рд╢реБрд▓реНрдХ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред :)
рд╣рд╛рдБ, рдареАрдХ рд╣реИред рд╣рдореЗрдВ рд╕рд┐рд░реНрдл рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ, рд╕реНрдЯреНрд░реАрдо рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЙрджрд╛рд╣рд░рдг рдЬрдЧрд╣ рдореЗрдВ рд╣реИрдВред

рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рд╡реАрдбрд┐рдпреЛ рдХреИрдкреНрдЪрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдХрд▓реНрдкред


BSD рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХреЛрдб рдХреЗ рд▓рд┐рдП OpenCV рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдзрдиреНрдпрд╡рд╛рджред
рд╣рдо рд╕рдВрд╕реНрдХрд░рдг 2.4.2 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рд╣рдо рдореЙрдбреНрдпреВрд▓ / highgui / src рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рднрд╛рдЧ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВрдЧреЗред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рдЖрдк рдмрд╕ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХреЙрдкреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, cap_pvapi.cpp, cap_giganetix.cpp рдХреЛ рдЕрдкрдирд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреБрдХреНрдд рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВ, рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВ (рдирдпрд╛ рддрд░реАрдХрд╛ рдФрд░ рдПрдирдо рдПрдиреНрдпреВрдорд░реЗрд╢рди рдПрд▓рд┐рдореЗрдВрдЯреНрд╕) precomp .hpp рдХреЛрдб рдФрд░ cmake рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рд░реНрджреЗрд╢ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдПрдВ рдФрд░ рдмрд┐рд▓реНрдб рдХреЛ рдЪрд▓рд╛рдПрдВред
рдпрд╣ рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рд╣реИред рдореБрдЦреНрдп рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рддрдХ рд╕рдм рдХреБрдЫ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдирдП рд░рд┐рд▓реАрдЬ рдХрд╛ рдкреБрди: рд╡рд┐рдХрд╛рд╕ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИред
рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░ рд╡рд┐рдХрд▓реНрдк рднреА рд╣реИ, рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐, OpenCV рд╕реЗ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдПрдХ рдирдП рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ CvCaptute рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред рдкреНрд▓рд╕ рдпрд╣ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдЕрдкрдиреА рд╕рднреА рдХрдорд╛рдИ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрд╕рдбреАрдХреЗ рдХреЛ рдирдП рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдУрдкрдирд╕реАрд╡реА рджреЛрдиреЛрдВ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИред
рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, "рдПрдХ рдкреНрд░рд╣рд╛рд░ рдореЗрдВ рд╕реБрдЕрд░" рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИ - CvCapture рдХреА рдЫрд┐рдкреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ OpenCV рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдУрд░ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
рдЪрд▓реЛ рдЕрдВрддрд┐рдо рд╡рд┐рдХрд▓реНрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

CvCapture рдкреНрд░рдХрд╛рд░ рдмрд╛рд╣рд░реА рд╡реАрдбрд┐рдпреЛ рдХреИрдкреНрдЪрд░ рдбрд┐рд╡рд╛рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реАред

рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ , рдпрд╣ рд╢рдмреНрдж рдореИрдХреНрд░реЛрдЬрд╝, рд╕реНрд░реЛрдд рдХреЗ рдЧрдгрдирд╛ рдореВрд▓реНрдпреЛрдВ рдФрд░ рд╣реЗрдбрд░ рдУрдкрдирд╕реАрд╡реА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдерд╛ ред
macros.hpp
 #ifndef MACROS_HPP #define MACROS_HPP #define QTGIG_HEARTBEAT_TIME (12000.0) #define QTGIG_MAX_WAIT_TIME (2.0) #define QTGIG_IMG_WAIT_TIME (3.0) #define CV_CAP_GIGANETIX 1300 // GigE additional for highgui_c.h //enum { #define CV_CAP_PROP_GIGA_FRAME_SENS_WIDTH 40 #define CV_CAP_PROP_GIGA_FRAME_SENS_HEIGH 41 #define CV_CAP_PROP_GIGA_FRAME_WIDTH_MAX 42 #define CV_CAP_PROP_GIGA_FRAME_HEIGH_MAX 43 #define CV_CAP_PROP_GIGA_FRAME_OFFSET_X 44 #define CV_CAP_PROP_GIGA_FRAME_OFFSET_Y 45 //}; //precomp.hpp double #define __BEGIN__ __CV_BEGIN__ #define __END__ __CV_END__ #define EXIT __CV_EXIT__ #endif // MACROS_HPP 


рдмрд╣реБрдд
 //precomp.hpp double #define __BEGIN__ __CV_BEGIN__ #define __END__ __CV_END__ #define EXIT __CV_EXIT__ 
OpenCV рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдореЛрдВ рдХреЛ рдХреЛрдб рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░реЗрдЧрд╛ред рдЕрдкрдиреЗ рдЪрд╛рд░реНрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдЬреАрдм рдорда рдореЗрдВ рдордд рдЬрд╛рдУ!
рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдЕрдкрдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдХреБрдЫ рдЧреБрдг рдЬреЛрдбрд╝реЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдХреИрдорд░реЗ рдХреЗ рдПрд╕рдбреАрдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд░рдг рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдБред рдпрд╣ рд╣рдорд╛рд░реЗ рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдПрд╕рдбреАрдХреЗ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрдкрд╛рджрди рдХреЗ рд╕рд╛рде рдХрдо рдХрд░ рджреЗрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рд╢реИрд▓реА рд╣реИред

gige_wrapper.h
 #ifndef GIGE_WRAPPER_H #define GIGE_WRAPPER_H /** \module GIGA_WRAPPER \brief Smartek Giganetix Cameras wrapper */ #include <GigEVisionSDK.h> namespace gigew { /*----------------------------------------------------------------------------*/ /** \internal \fn bool gigew::wrprInitGigEVisionAPI(); \brief Wrapper to GigEVisionAPI function gige::InitGigEVisionAPI () \return true - success See \a gigew::wrprExitGigEVisionAPI */ bool wrprInitGigEVisionAPI(); /*----------------------------------------------------------------------------*/ /** \internal \fn void gigew::wrprExitGigEVisionAPI() \brief Wrapper to GigEVisionAPI function gige::ExitGigEVisionAPI () \return true -- success See \a gigew::wrprInitGigEVisionAPI */ bool wrprExitGigEVisionAPI(); //   ... } //namespace gigew #endif // GIGE_WRAPPER_H 



рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдбрд┐рд╡рд╛рдЗрд╕ рд╣реА (cap_giganetix.h)
 #ifndef CAP_GIGANENIX_H #define CAP_GIGANENIX_H #include <opencv2/highgui/highgui_c.h> #include "GigEVisionSDK.h" #include "../../common/macros.hpp" #include <QObject> #ifdef HAVE_GIGE_API #if !defined WIN32 && !defined _WIN32 && !defined _LINUX #define _LINUX #endif #if defined(_x64) || defined (__x86_64) || defined (_M_X64) #define _x64 1 #elif defined(_x86) || defined(__i386) || defined (_M_IX86) #define _x86 1 #endif /*----------------------------------------------------------------------------*/ /** \internal \struct CvCapture \brief Copy OpenCV CvCapture internal release. */ struct CvCapture { virtual ~CvCapture() {} virtual double getProperty(int) { return 0; } virtual bool setProperty(int, double) { return 0; } virtual bool grabFrame() { return true; } virtual IplImage* retrieveFrame(int) { return 0; } virtual int getCaptureDomain() { return CV_CAP_ANY; } // Return the type of the capture object: CV_CAP_VFW, etc... }; /*----------------------------------------------------------------------------*/ /** \internal \class CvCaptureCAM_Giganetix \brief Capturing video from camera via Smartec Giganetix GigEVisualSDK */ class Q_DECL_EXPORT CvCaptureCAM_Giganetix : public CvCapture { public: CvCaptureCAM_Giganetix(); virtual ~CvCaptureCAM_Giganetix(); virtual bool open( int index ); virtual void close(); virtual double getProperty(int); virtual bool setProperty(int, double); virtual bool grabFrame(); virtual IplImage* retrieveFrame(int); virtual int getCaptureDomain() { return CV_CAP_GIGANETIX; } bool start (); bool stop (); protected: void init (); void grabImage (); gige::IGigEVisionAPI m_api; bool m_api_on; gige::IDevice m_device; bool m_active; IplImage* m_raw_image; UINT32 m_rawImagePixelType; bool m_monocrome; }; /*----------------------------------------------------------------------------*/ Q_DECL_EXPORT CvCapture* cvCreateCameraCapture_Giganetix( int index ); /*----------------------------------------------------------------------------*/ #endif #endif // CQTGIGEVISIONCAPTURE_H 


рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ struct CvCapture OpenCV рд╕реНрд░реЛрдд рдХреЛрдб (рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЙрдбреНрдпреВрд▓ / highgui / src , рдлрд╝рд╛рдЗрд▓ precomp.hpp ) рд╕реЗ рд▓реА рдЧрдИ рд╣реИред рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЕрдбрд╝рдЪрди!

рд╣рдо рд╡рд░реНрдЧ рдФрд░ рд╡рд┐рдзрд┐ cvCreateCameraCapture_Giganetix рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ cvCreateCameraCapture_Giganetix ред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдкреБрд░рд╛рд▓реЗрдЦ рд▓рд┐рдВрдХ рд▓реЗрддреЗ рд╣реИрдВ
рдореИрдВ рдХреЗрд╡рд▓ open рд╡рд┐рдзрд┐ рдХрд╛ рдХреЛрдб рджреВрдВрдЧрд╛:
 ... /*----------------------------------------------------------------------------*/ bool CvCaptureCAM_Giganetix::open( int index ) { bool b_ret = m_api_on; CV_FUNCNAME("CvCaptureCAM_Giganetix::open"); __BEGIN__; if(b_ret) b_ret = m_api.IsValid (); if(b_ret ) { m_api->FindAllDevices (QTGIG_MAX_WAIT_TIME); //TODO - serch device as DevicesList member gige::DevicesList DevicesList = m_api->GetAllDevices (); m_device = 0; b_ret = false; for (int i = 0; i < (int) DevicesList.size() && !b_ret; i++) { if((b_ret = i == index)) { m_device = DevicesList[i]; b_ret = m_device->Connect (); if(b_ret) { b_ret = m_device->SetStringNodeValue("AcquisitionStatusSelector", "AcquisitionActive") && m_device->SetStringNodeValue ("TriggerMode", "Off") && m_device->SetStringNodeValue ("AcquisitionMode", "Continuous") && m_device->SetIntegerNodeValue ("AcquisitionFrameCount", 20) ; } } } // for } if(!b_ret) { CV_ERROR(CV_StsError, "Giganetix: Error cannot find camera\n"); close (); } else { start (); } __END__; return b_ret; } ... 

рдпрд╣ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ OpenCV рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╢реИрд▓реА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рдо рдПрд╕рдбреАрдХреЗ рдФрд░ рдУрдкрдирд╕реАрд╡реА рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд╛рде рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЬреБрдбрд╝реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ:
 #----------------------------------------------------------- TARGET = QtGigEVisionCapture TEMPLATE = lib #CONFIG += release #----------------------------------------------------------- DEFINES += QTGIGEVISION_LIBRARY \ HAVE_GIGE_API #----------------------------------------------------------- SOURCES += \ ../../common/QtGigEVision_global.cpp \ cap_giganetix.cpp \ gige_wrapper.cpp HEADERS +=\ ../../common/QtGigEvision_global.h \ ../../common/macros.hpp \ cap_giganetix.h \ gige_wrapper.h #----------------------------------------------------------- unix:!symbian: target.path = /usr/lib INSTALLS += target #----------------------------------------------------------- unix:!macx:!symbian: LIBS += -L/usr/local/lib/ -lGigEVisionSDK INCLUDEPATH += /usr/local/include/GigEVisionSDK/gige_cpp \ /usr/local/include/GigEVisionSDK/gige_c DEPENDPATH += /usr/local/include/GigEVisionSDK/gige_cpp \ /usr/local/include/GigEVisionSDK/gige_c #----------------------------------------------------------- unix: LIBS += -L/usr/lib/ -lopencv_core -lopencv_highgui INCLUDEPATH += /usr/include/opencv2/core \ /usr/include/opencv2/highgui DEPENDPATH += /usr/include/opencv2/core \ /usr/include/opencv2/highgui 



рд╕реБрдкрд░рд╕реБрд╕рд░ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рддрд╣рдд, рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ / usr / lib рдореЗрдВ рд╣рдо рдирдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдВрдХ рджреЗрддреЗ рд╣реИрдВ рдФрд░ ... рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред

рдЯреЗрд╕реНрдЯ рдХреЗрд╕ред


рдХреЛрдб
 #include <QtGui/QApplication> #include "../../common/macros.hpp" #include <stdio.h> #include "cap_giganetix.h" void print_properties (CvCaptureCAM_Giganetix* cap) { if(cap) { printf("Device found.\n"); printf("Sensor Width = %d.\n", (int)cap->getProperty (CV_CAP_PROP_GIGA_FRAME_SENS_WIDTH)); printf("Sensor Height = %d.\n", (int)cap->getProperty (CV_CAP_PROP_GIGA_FRAME_SENS_HEIGH)); printf("Offset X = %d.\n", (int)cap->getProperty (CV_CAP_PROP_GIGA_FRAME_OFFSET_X)); printf("Offset Y = %d.\n", (int)cap->getProperty (CV_CAP_PROP_GIGA_FRAME_OFFSET_Y)); printf("Width = %d.\n", (int)cap->getProperty (CV_CAP_PROP_FRAME_WIDTH)); printf("Height = %d.\n", (int)cap->getProperty (CV_CAP_PROP_FRAME_HEIGHT)); printf("Frame Count = %d.\n", (int)cap->getProperty (CV_CAP_PROP_FRAME_COUNT)); printf("Gain = %d.\n", (int)cap->getProperty (CV_CAP_PROP_GAIN)); } } int main(int argc, char *argv[]) { QApplication a(argc, argv); CvCapture* capture = cvCreateCameraCapture_Giganetix(0); CvCaptureCAM_Giganetix* cap = (CvCaptureCAM_Giganetix*)capture; int i_width, i_height, i_offX, i_offY; if(cap) { i_width = (int)capture->getProperty (CV_CAP_PROP_FRAME_WIDTH); i_height = (int)capture->getProperty (CV_CAP_PROP_FRAME_HEIGHT); i_offX = (int)capture->getProperty (CV_CAP_PROP_GIGA_FRAME_OFFSET_X); i_offY = (int)capture->getProperty (CV_CAP_PROP_GIGA_FRAME_OFFSET_Y); printf("-------------------------\n"); print_properties (cap); printf("-------------------------\n"); ... INT64 i = 0; cvNamedWindow("Frame",0); while(1) { if(i == 1000) { printf("------ Reset to original -------\n"); (void)capture->setProperty (CV_CAP_PROP_FRAME_WIDTH, i_width); (void)cap->setProperty (CV_CAP_PROP_FRAME_HEIGHT, i_height); (void)capture->setProperty (CV_CAP_PROP_GIGA_FRAME_OFFSET_X, i_offX); (void)cap->setProperty (CV_CAP_PROP_GIGA_FRAME_OFFSET_Y, i_offY); print_properties (cap); } i++; IplImage* frame = cvQueryFrame (capture); if(frame) cvShowImage ("Frame",frame); if((cvWaitKey (3) == 27)) break; } cvDestroyWindow("Frame"); cvReleaseCapture(&capture); } return 0;//a.exec(); } 



рдирд┐рд╖реНрдард╛ рд╕реЗред
рд╕реМрднрд╛рдЧреНрдп!

Source: https://habr.com/ru/post/In148850/


All Articles