#ifdef _MSC_VER
# if _MSC_VER < 1300
# pragma warning( disable : 4786 )
# endif
#endif
#include <iostream>
#include <apps/Common/exampleHelper.h>
#include <common/minmax.h>
#include <mvIMPACT_CPP/mvIMPACT_acquire.h>
#ifdef _WIN32
# include <windows.h>
# include <process.h>
# include <mvDisplay/Include/mvIMPACT_acquire_display.h>
# define USE_DISPLAY
#elif defined(linux) || defined(__linux) || defined(__linux__) || defined(__APPLE__)
# if defined(__x86_64__) || defined(__aarch64__) || defined(__powerpc64__)
typedef uint64_t UINT_PTR;
# elif defined(__i386__) || defined(__arm__) || defined(__powerpc__)
typedef uint32_t UINT_PTR;
# endif
#endif
#ifdef BUILD_WITH_OPENCV_SUPPORT
# include <opencv2/core/core.hpp>
# include <opencv2/highgui/highgui.hpp>
# include <opencv2/imgproc/imgproc.hpp>
#endif
using namespace std;
static bool s_boTerminated = false;
class UserSuppliedHeapBuffer
{
char* pBuf_;
int bufSize_;
int alignment_;
public:
explicit UserSuppliedHeapBuffer( int bufSize, int alignment ) : pBuf_( 0 ), bufSize_( bufSize ), alignment_( alignment )
{
if( bufSize_ > 0 )
{
pBuf_ = new char[bufSize_ + alignment_];
}
}
~UserSuppliedHeapBuffer()
{
delete [] pBuf_;
}
char* getPtr( void )
{
if( alignment_ <= 1 )
{
return pBuf_;
}
return reinterpret_cast<char*>( align( reinterpret_cast<UINT_PTR>( pBuf_ ), static_cast<UINT_PTR>( alignment_ ) ) );
}
int getSize( void ) const
{
return bufSize_;
}
};
typedef std::vector<UserSuppliedHeapBuffer*> CaptureBufferContainer;
struct CaptureParameter
{
#ifdef USE_DISPLAY
#endif
#ifdef BUILD_WITH_OPENCV_SUPPORT
std::string openCVDisplayTitle;
std::string openCVResultDisplayTitle;
#endif
bool boUserSuppliedMemoryUsed;
bool boAlwaysUseNewUserSuppliedBuffers;
int bufferSize;
int bufferAlignment;
int bufferPitch;
CaptureBufferContainer buffers;
explicit CaptureParameter(
Device* p ) : pDev( p ), fi( p ), irc( p ), statistics( p ), boUserSuppliedMemoryUsed( false ),
boAlwaysUseNewUserSuppliedBuffers( false ), bufferSize( 0 ), bufferAlignment( 0 ), bufferPitch( 0 ), buffers()
{
#ifdef USE_DISPLAY
const string windowTitle(
"mvIMPACT_acquire sample, Device " + pDev->
serial.
read() );
#endif
#ifdef BUILD_WITH_OPENCV_SUPPORT
openCVDisplayTitle = string(
"mvIMPACT_acquire sample, Device " + pDev->
serial.
read() +
", OpenCV display" );
openCVResultDisplayTitle = openCVDisplayTitle + "(Result)";
#endif
}
~CaptureParameter()
{
#ifdef USE_DISPLAY
delete pDisplayWindow;
#endif
}
};
void checkCaptureBufferAddress(
const Request*
const pRequest,
bool boShouldContainUserSuppliedMemory,
const CaptureBufferContainer& buffers );
int createCaptureBuffer(
FunctionInterface& fi, CaptureBufferContainer& buffers,
const int bufferSize,
const int bufferAlignment,
const int bufferPitch,
unsigned int requestNr );
int createCaptureBuffers(
FunctionInterface& fi, CaptureBufferContainer& buffers,
const int bufferSize,
const int bufferAlignment,
const int bufferPitch );
void freeCaptureBuffer(
FunctionInterface& fi, CaptureBufferContainer& buffers,
unsigned int requestNr );
CaptureBufferContainer::iterator lookUpBuffer( CaptureBufferContainer& buffers, void* pAddr );
void runLiveLoop( CaptureParameter& captureParams );
void checkCaptureBufferAddress(
const Request*
const pRequest,
bool boShouldContainUserSuppliedMemory,
const CaptureBufferContainer& buffers )
{
{
cout <<
"ERROR: Request number " << pRequest->
getNumber() <<
" is supposed to contain user supplied memory, but claims that it doesn't." << endl;
return;
}
else if( !boShouldContainUserSuppliedMemory )
{
{
cout <<
"ERROR: Request number " << pRequest->
getNumber() <<
" is supposed NOT to contain user supplied memory, but claims that it does." << endl;
}
return;
}
const CaptureBufferContainer::size_type vSize = buffers.size();
for( CaptureBufferContainer::size_type i = 0; i < vSize; i++ )
{
if( pAddr == buffers[i]->getPtr() )
{
return;
}
}
cout <<
"ERROR: A buffer has been returned, that doesn't match any of the buffers assigned as user memory in request number " << pRequest->
getNumber() <<
"." << endl;
cout << "Buffer got: 0x" << pAddr << endl;
cout << "Buffers allocated:" << endl;
for( CaptureBufferContainer::size_type j = 0; j < vSize; j++ )
{
cout << "[" << j << "]: 0x" << reinterpret_cast<void*>( buffers[j]->getPtr() ) << endl;
}
}
int createCaptureBuffer(
FunctionInterface& fi, CaptureBufferContainer& buffers,
const int bufferSize,
const int bufferAlignment,
const int ,
unsigned int requestNr )
{
UserSuppliedHeapBuffer* pBuffer = new UserSuppliedHeapBuffer( bufferSize, bufferAlignment );
if( ( functionResult = pRequest->
attachUserBuffer( pBuffer->getPtr(), pBuffer->getSize() ) ) != DMR_NO_ERROR )
{
cout << "An error occurred while attaching a buffer to request number " << requestNr << ": " << ImpactAcquireException::getErrorCodeAsString( functionResult ) << "." << endl;
delete pBuffer;
return -1;
}
buffers.push_back( pBuffer );
return 0;
}
int createCaptureBuffers(
FunctionInterface& fi, CaptureBufferContainer& buffers,
const int bufferSize,
const int bufferAlignment,
const int bufferPitch )
{
freeCaptureBuffers( fi, buffers );
for( unsigned int i = 0; i < requestCnt; i++ )
{
try
{
const int result = createCaptureBuffer( fi, buffers, bufferSize, bufferAlignment, bufferPitch, i );
if( result != 0 )
{
freeCaptureBuffers( fi, buffers );
return result;
}
}
{
freeCaptureBuffers( fi, buffers );
}
}
return 0;
}
void freeCaptureBuffer(
FunctionInterface& fi, CaptureBufferContainer& buffers,
unsigned int requestNr )
{
try
{
{
{
cout << "An error occurred while detaching a buffer from request number " << requestNr << " : " << ImpactAcquireException::getErrorCodeAsString( functionResult ) << "." << endl;
}
}
CaptureBufferContainer::iterator it = lookUpBuffer( buffers, pRequest->
imageData.
read() );
if( it != buffers.end() )
{
delete( *it );
buffers.erase( it );
}
}
{
cout <<
"An error occurred while changing the mode of request number " << requestNr <<
": " << e.
getErrorCodeAsString() <<
"." << endl;
}
}
{
for( unsigned int i = 0; i < requestCnt; i++ )
{
freeCaptureBuffer( fi, buffers, i );
}
if( !buffers.empty() )
{
cout << "Error! The buffer container should be empty now but still contains " << buffers.size() << " elements!" << endl;
}
}
CaptureBufferContainer::iterator lookUpBuffer( CaptureBufferContainer& buffers, void* pAddr )
{
const CaptureBufferContainer::iterator itEND = buffers.end();
CaptureBufferContainer::iterator it = buffers.begin();
while( it != itEND )
{
if( pAddr == ( *it )->getPtr() )
{
break;
}
++it;
}
return it;
}
void displayImage( CaptureParameter* pCaptureParameter,
Request* pRequest )
{
#if !defined(USE_DISPLAY) && !defined(BUILD_WITH_OPENCV_SUPPORT)
( void )pRequest;
( void )pCaptureParameter;
#endif
#ifdef USE_DISPLAY
pCaptureParameter->pDisplayWindow->GetImageDisplay().SetImage( pRequest );
pCaptureParameter->pDisplayWindow->GetImageDisplay().Update();
#endif
#ifdef BUILD_WITH_OPENCV_SUPPORT
int openCVDataType = CV_8UC1;
{
openCVDataType = CV_8UC1;
break;
openCVDataType = CV_16UC1;
break;
openCVDataType = CV_32SC1;
break;
openCVDataType = CV_8UC3;
break;
openCVDataType = CV_8UC4;
break;
openCVDataType = CV_16UC3;
break;
cout <<
"ERROR! Don't know how to render this pixel format (" << pRequest->
imagePixelFormat.
readS() <<
") in OpenCV! Select another one e.g. by writing to mvIMPACT::acquire::ImageDestination::pixelFormat!" << endl;
exit( 42 );
break;
}
cv::imshow( pCaptureParameter->openCVDisplayTitle, openCVImage );
cv::waitKey( 5 );
cv::Mat edgesMat;
switch( openCVDataType )
{
case CV_16UC3:
cout << "This format seems to crash the Canny Edge detector. Will display the original image instead!" << endl;
edgesMat = openCVImage;
break;
default:
cv::Canny( openCVImage, edgesMat, 35.0, 55.0 );
break;
}
cv::imshow( pCaptureParameter->openCVResultDisplayTitle, edgesMat );
cv::waitKey( 5 );
#endif
}
unsigned int DMR_CALL liveLoop( void* pData )
{
CaptureParameter* pThreadParameter = reinterpret_cast<CaptureParameter*>( pData );
while( ( result =
static_cast<TDMR_ERROR>( pThreadParameter->fi.imageRequestSingle() ) ) ==
DMR_NO_ERROR ) {};
if( result != DEV_NO_FREE_REQUEST_AVAILABLE )
{
cout << "'FunctionInterface.imageRequestSingle' returned with an unexpected result: " << result
<< "(" << ImpactAcquireException::getErrorCodeAsString( result ) << ")" << endl;
}
manuallyStartAcquisitionIfNeeded( pThreadParameter->pDev, pThreadParameter->fi );
unsigned int cnt = 0;
const unsigned int timeout_ms = 500;
while( !s_boTerminated )
{
const int requestNr = pThreadParameter->fi.imageRequestWaitFor( timeout_ms );
pRequest = pThreadParameter->fi.isRequestNrValid( requestNr ) ? pThreadParameter->fi.getRequest( requestNr ) : 0;
if( pRequest )
{
{
++cnt;
if( cnt % 100 == 0 )
{
cout << "Info from " << pThreadParameter->pDev->serial.read()
<< ": " << pThreadParameter->statistics.framesPerSecond.name() << ": " << pThreadParameter->statistics.framesPerSecond.readS()
<< ", " << pThreadParameter->statistics.errorCount.name() << ": " << pThreadParameter->statistics.errorCount.readS()
<< ", " << pThreadParameter->statistics.captureTime_s.name() << ": " << pThreadParameter->statistics.captureTime_s.readS()
}
displayImage( pThreadParameter, pRequest );
checkCaptureBufferAddress( pRequest, pThreadParameter->boUserSuppliedMemoryUsed, pThreadParameter->buffers );
}
else
{
}
if( pPreviousRequest )
{
if( pThreadParameter->boAlwaysUseNewUserSuppliedBuffers )
{
freeCaptureBuffer( pThreadParameter->fi, pThreadParameter->buffers, pPreviousRequest->
getNumber() );
createCaptureBuffer( pThreadParameter->fi, pThreadParameter->buffers, pThreadParameter->bufferSize, pThreadParameter->bufferAlignment, pThreadParameter->bufferPitch, pPreviousRequest->
getNumber() );
}
}
pPreviousRequest = pRequest;
pThreadParameter->fi.imageRequestSingle();
}
else
{
cout << "imageRequestWaitFor failed (" << requestNr << ", " << ImpactAcquireException::getErrorCodeAsString( requestNr ) << ")"
<< ", timeout value too small?" << endl;
}
#if defined(linux) || defined(__linux) || defined(__linux__) || defined(__APPLE__)
s_boTerminated = checkKeyboardInput() == 0 ? false : true;
#endif
}
manuallyStopAcquisitionIfNeeded( pThreadParameter->pDev, pThreadParameter->fi );
#ifdef USE_DISPLAY
pThreadParameter->pDisplayWindow->GetImageDisplay().RemoveImage();
#endif
#ifdef BUILD_WITH_OPENCV_SUPPORT
cv::destroyAllWindows();
#endif
if( pRequest )
{
}
pThreadParameter->fi.imageRequestReset( 0, 0 );
return 0;
}
void runLiveLoop( CaptureParameter& captureParams )
{
s_boTerminated = false;
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
unsigned int dwThreadID = 0;
HANDLE hThread = ( HANDLE )_beginthreadex( 0, 0, liveLoop, ( LPVOID )( &captureParams ), 0, &dwThreadID );
cin.get();
s_boTerminated = true;
WaitForSingleObject( hThread, INFINITE );
CloseHandle( hThread );
#else
liveLoop( &captureParams );
#endif
}
int main( void )
{
Device* pDev = getDeviceFromUserInput( devMgr );
if( !pDev )
{
cout << "Unable to continue! Press [ENTER] to end the application" << endl;
cin.get();
return 1;
}
cout << "Initialising the device. This might take some time..." << endl;
try
{
}
{
cout <<
"An error occurred while opening device " << pDev->
serial.
read()
<< "Press [ENTER] to end the application..." << endl;
cin.get();
return 1;
}
CaptureParameter captureParams( pDev );
cout << "The device will try to capture continuously into memory automatically allocated be the device driver." << endl
<< "This is the default behaviour." << endl;
cout << "Press [ENTER] to end the continuous acquisition." << endl;
runLiveLoop( captureParams );
cout << "The device will now try to capture continuously into user supplied memory." << endl;
captureParams.boUserSuppliedMemoryUsed = true;
int bufferAlignment = 0;
Request* pCurrentCaptureBufferLayout = 0;
captureParams.fi.getCurrentCaptureBufferLayout( captureParams.irc, &pCurrentCaptureBufferLayout, &bufferAlignment );
int result = createCaptureBuffers( captureParams.fi, captureParams.buffers, bufferSize, bufferAlignment, bufferPitch );
if( result != 0 )
{
cout << "An error occurred while setting up the user supplied buffers for device " << captureParams.pDev->serial.read()
<< "(error code: " << ImpactAcquireException::getErrorCodeAsString( result ) << ")." << endl
<< "Press [ENTER] to end the application..." << endl;
cin.get();
return 1;
}
cout << "Press [ENTER] to end the continuous acquisition into user supplied memory." << endl;
runLiveLoop( captureParams );
freeCaptureBuffers( captureParams.fi, captureParams.buffers );
cout << "The device will now try to capture continuously into user supplied memory using a new buffer for each image thus constantly re-allocating and freeing user memory." << endl;
captureParams.boUserSuppliedMemoryUsed = true;
captureParams.boAlwaysUseNewUserSuppliedBuffers = true;
captureParams.bufferSize = bufferSize;
captureParams.bufferAlignment = bufferAlignment;
captureParams.bufferPitch = bufferPitch;
result = createCaptureBuffers( captureParams.fi, captureParams.buffers, bufferSize, bufferAlignment, bufferPitch );
if( result != 0 )
{
cout << "An error occurred while setting up the user supplied buffers for device " << captureParams.pDev->serial.read()
<< "(error code: " << ImpactAcquireException::getErrorCodeAsString( result ) << ")." << endl
<< "Press [ENTER] to end the application..." << endl;
cin.get();
return 1;
}
cout << "Press [ENTER] to end the continuous acquisition." << endl;
runLiveLoop( captureParams );
freeCaptureBuffers( captureParams.fi, captureParams.buffers );
captureParams.boUserSuppliedMemoryUsed = false;
captureParams.boAlwaysUseNewUserSuppliedBuffers = false;
cout << "The device will try to capture continuously into memory automatically allocated be the device driver again." << endl
<< "This is the default behaviour." << endl;
cout << "Press [ENTER] to end the continuous acquisition." << endl;
runLiveLoop( captureParams );
cout << "Now the device will try to capture one frame into a specific user supplied buffer" << endl;
UserSuppliedHeapBuffer buffer( bufferSize, bufferAlignment );
const int REQUEST_TO_USE = 2;
ss.requestCount.write( REQUEST_TO_USE + 1 );
Request* pRequest = captureParams.fi.getRequest( REQUEST_TO_USE );
try
{
int functionResult = pRequest->
attachUserBuffer( buffer.getPtr(), buffer.getSize() );
if( functionResult != DMR_NO_ERROR )
{
cout << "An error occurred while attaching a user buffer to request number " << REQUEST_TO_USE << ": " << ImpactAcquireException::getErrorCodeAsString( functionResult ) << "." << endl;
cout << "Press [ENTER] to end the application." << endl;
cin.get();
return 1;
}
}
{
cout <<
"An error occurred while attaching a user buffer to request number " << REQUEST_TO_USE <<
": " << ImpactAcquireException::getErrorCodeAsString( e.
getErrorCode() ) <<
"." << endl;
cout << "Press [ENTER] to end the application." << endl;
cin.get();
return 1;
}
captureParams.irc.requestToUse.write( REQUEST_TO_USE );
result = captureParams.fi.imageRequestSingle( &captureParams.irc, &requestUsed );
if( result != DMR_NO_ERROR )
{
cout << "An error occurred while requesting an image for request number " << REQUEST_TO_USE << ": " << ImpactAcquireException::getErrorCodeAsString( result ) << "." << endl;
cout << "Press [ENTER] to end the application." << endl;
cin.get();
return 1;
}
if( requestUsed != REQUEST_TO_USE )
{
cout << "ERROR! An acquisition into buffer " << REQUEST_TO_USE << " was requested, but the driver did use " << requestUsed << " for this acquisition." << endl;
}
manuallyStartAcquisitionIfNeeded( pDev, captureParams.fi );
int requestNr = captureParams.fi.imageRequestWaitFor( -1 );
manuallyStopAcquisitionIfNeeded( pDev, captureParams.fi );
pRequest = captureParams.fi.getRequest( requestNr );
{
cout << "Press [ENTER] to end the application..." << endl;
cin.get();
return 1;
}
cout << "Capture into specific user supplied buffer done." << endl;
displayImage( &captureParams, pRequest );
cout << "Press [ENTER] to end the application..." << endl;
cin.get();
captureParams.fi.imageRequestUnlock( requestNr );
captureParams.fi.imageRequestReset( 0, 0 );
return 0;
}
Grants access to devices that can be operated by this software interface.
Definition mvIMPACT_acquire.h:7171
This class and its functions represent an actual device detected by this interface in the current sys...
Definition mvIMPACT_acquire.h:6118
PropertyS serial
A string property (read-only) containing the serial number of this device.
Definition mvIMPACT_acquire.h:6551
void open(void)
Opens a device.
Definition mvIMPACT_acquire.h:6420
ZYX read(int index=0) const
Reads a value from a property.
Definition mvIMPACT_acquire.h:4300
The function interface to devices supported by this interface.
Definition mvIMPACT_acquire.h:10758
unsigned int requestCount(void) const
Returns the number of available request objects.
Definition mvIMPACT_acquire.h:11927
Request * getRequest(int nr) const
Returns a pointer to the desired mvIMPACT::acquire::Request.
Definition mvIMPACT_acquire.h:11189
A helper class to control the way an image request will be processed.
Definition mvIMPACT_acquire.h:10360
A base class for exceptions generated by Impact Acquire.
Definition mvIMPACT_acquire.h:256
std::string getErrorCodeAsString(void) const
Returns a string representation of the error associated with the exception.
Definition mvIMPACT_acquire.h:288
int getErrorCode(void) const
Returns a unique numerical representation for this error.
Definition mvIMPACT_acquire.h:275
void * read(int index=0) const
Reads a value from a property.
Definition mvIMPACT_acquire.h:5176
std::string read(int index=0) const
Reads a value from a property.
Definition mvIMPACT_acquire.h:5323
std::string readS(int index=0, const std::string &format="") const
Reads data from this property as a string.
Definition mvIMPACT_acquire.h:3340
Contains information about a captured buffer.
Definition mvIMPACT_acquire.h:8640
PropertyI imageHeight
An integer property (read-only) containing the height of the image in pixels.
Definition mvIMPACT_acquire.h:10331
bool isOK(void) const
Convenience function to check if a request has been processed successfully.
Definition mvIMPACT_acquire.h:9474
PropertyIRequestResult requestResult
An enumerated integer property (read-only) defining the result of this request.
Definition mvIMPACT_acquire.h:9780
PropertyI imageSize
An integer property (read-only) containing the size (in bytes) of the whole image.
Definition mvIMPACT_acquire.h:10202
PropertyI imageWidth
An integer property (read-only) containing the width of the image in pixels.
Definition mvIMPACT_acquire.h:10320
PropertyIRequestImageMemoryMode imageMemoryMode
An enumerated integer property (read-only) containing the memory mode used for this request.
Definition mvIMPACT_acquire.h:10124
int attachUserBuffer(void *pBuf, int bufSize)
Convenience function to attach a user supplied buffer to a mvIMPACT::acquire::Request object.
Definition mvIMPACT_acquire.h:9665
PropertyIImageBufferPixelFormat imagePixelFormat
An enumerated integer property (read-only) containing the pixel format of this image.
Definition mvIMPACT_acquire.h:10132
PropertyPtr imageData
A pointer property (read-only) containing the start address of the image data.
Definition mvIMPACT_acquire.h:10187
int detachUserBuffer(void)
Convenience function to detach a user supplied buffer from a mvIMPACT::acquire::Request object.
Definition mvIMPACT_acquire.h:9757
int unlock(void)
Unlocks the request for the driver again.
Definition mvIMPACT_acquire.h:9614
int getNumber(void) const
Returns the number associated with this request.
Definition mvIMPACT_acquire.h:9060
PropertyI imageLinePitch
An integer property (read-only) containing the offset (in bytes) to the next line of each channel bel...
Definition mvIMPACT_acquire.h:10262
PropertyI imageFooterSize
An integer property (read-only) containing the size (in bytes) of the footer associated with this ima...
Definition mvIMPACT_acquire.h:10217
Contains basic statistical information.
Definition mvIMPACT_acquire.h:14509
A base class for accessing settings that control the overall behaviour of a device driver.
Definition mvIMPACT_acquire.h:14728
A class that can be used to display images in a window.
Definition mvIMPACT_acquire_display.h:606
TDMR_ERROR
Errors reported by the device manager.
Definition mvDriverBaseEnums.h:2601
const int INVALID_ID
A constant to check for an invalid ID returned from the property handling module.
Definition mvPropHandlingDatatypes.h:62
@ DMR_NO_ERROR
The function call was executed successfully.
Definition mvDriverBaseEnums.h:2603
@ ibpfYUV444Planar
A three channel YUV444 planar format occupying 24 bit per pixels. (PFNC name: YUV444_8_YVU_Planar)
Definition TImageBufferPixelFormat.h:175
@ ibpfMono32
A single channel 32 bit per pixel format. (PFNC name: Mono32)
Definition TImageBufferPixelFormat.h:177
@ ibpfRGB101010Packed
A three channel interleaved RGB image occupying 48 bit with 30 bit of usable data per pixel....
Definition TImageBufferPixelFormat.h:224
@ ibpfYUV444_UYV_10Packed
A three channel interleaved YUV format occupying 48 bit per pixel with 30 bit of usable data per pixe...
Definition TImageBufferPixelFormat.h:482
@ ibpfYUV444_10Packed
A three channel interleaved YUV format occupying 48 bit per pixel with 30 bit of usable data per pixe...
Definition TImageBufferPixelFormat.h:522
@ ibpfRGB888Packed
A three channel interleaved RGB format containing 24 bit per pixel. (PFNC name: BGR8)
Definition TImageBufferPixelFormat.h:155
@ ibpfYUV444Packed
A three channel interleaved YUV format occupying 24 bit per pixel. (PFNC name: YUV8)
Definition TImageBufferPixelFormat.h:501
@ ibpfBGR888Packed
A three channel interleaved RGB format with 24 bit per pixel. (PFNC name: RGB8)
Definition TImageBufferPixelFormat.h:399
@ ibpfRGB888Planar
A three channel planar RGB format. (PFNC name: RGB8_Planar)
Definition TImageBufferPixelFormat.h:596
@ ibpfMono12Packed_V1
A single channel 12 bit per pixel packed format occupying 12 bit per pixel. (PFNC name: Mono12p)
Definition TImageBufferPixelFormat.h:547
@ ibpfMono8
A single channel 8 bit per pixel format. (PFNC name: Mono8)
Definition TImageBufferPixelFormat.h:45
@ ibpfMono10
A single channel 10 bit per pixel format. (PFNC name: Mono10)
Definition TImageBufferPixelFormat.h:127
@ ibpfRGB141414Packed
A three channel interleaved RGB image occupying 48 bit with 42 bit of usable data per pixel....
Definition TImageBufferPixelFormat.h:266
@ ibpfYUV444_UYVPacked
A three channel interleaved YUV format occupying 24 bit per pixel. (PFNC name: YUV8_UYV)
Definition TImageBufferPixelFormat.h:461
@ ibpfMono12Packed_V2
A single channel 12 bit per pixel packed format occupying 12 bit per pixel. (PFNC name: Mono12Packed)
Definition TImageBufferPixelFormat.h:332
@ ibpfRGBx888Planar
A four channel planar RGB format. (PFNC name: RGBa8_Planar)
Definition TImageBufferPixelFormat.h:122
@ ibpfRGB161616Packed
A three channel interleaved RGB image occupying 48 bit per pixel. (PFNC name: BGR16)
Definition TImageBufferPixelFormat.h:286
@ ibpfYUV422Packed
A three channel interleaved YUV422 format using 32 bit for a pair of pixels. (PFNC name: YUV422_8)
Definition TImageBufferPixelFormat.h:93
@ ibpfMono12
A single channel 12 bit per pixel format. (PFNC name: Mono12)
Definition TImageBufferPixelFormat.h:132
@ ibpfYUV422_UYVYPacked
A three channel interleaved YUV422 format occupying 32 bit for a pair of pixels. (PFNC name: YUV422_8...
Definition TImageBufferPixelFormat.h:309
@ ibpfYUV422Planar
A three channel YUV422 planar format occupying 32 bit for a pair of pixels. (PFNC name: YUV422_8_YVU_...
Definition TImageBufferPixelFormat.h:203
@ ibpfMono14
A single channel 14 bit per pixel format. (PFNC name: Mono14)
Definition TImageBufferPixelFormat.h:137
@ ibpfYUV422_UYVY_10Packed
A three channel interleaved YUV422 format occupying 64 bit for a pair of pixels. (PFNC name: YUV422_1...
Definition TImageBufferPixelFormat.h:380
@ ibpfRGB121212Packed
A three channel interleaved RGB image occupying 48 bit with 36 bit of usable data per pixel....
Definition TImageBufferPixelFormat.h:245
@ ibpfYUV411_UYYVYY_Packed
A three channel interleaved YUV format occupying 48 bit for four pixels. (PFNC name: YUV411_8_UYYVYY)
Definition TImageBufferPixelFormat.h:573
@ ibpfBGR101010Packed_V2
A three channel 10 bit per color component RGB packed format occupying 32 bit per pixel....
Definition TImageBufferPixelFormat.h:442
@ ibpfYUV422_10Packed
A three channel interleaved YUV422 format occupying 64 bit for a pair of pixels. (PFNC name: YUV422_1...
Definition TImageBufferPixelFormat.h:356
@ ibpfMono16
A single channel 16 bit per pixel format. (PFNC name: Mono16)
Definition TImageBufferPixelFormat.h:47
@ ibpfRGBx888Packed
A four channel interleaved RGB format with 32 bit per pixel containing one alpha byte per pixel....
Definition TImageBufferPixelFormat.h:70
This namespace contains classes and functions that can be used to display images.
This namespace contains classes and functions belonging to the image acquisition module of this SDK.
Definition mvCommonDataTypes.h:34