⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grbcaps.h

📁 相机传输图像程序源代码 拜耳模式(RAW格式文件)与RGB图像数据互相转换函数库
💻 H
📖 第 1 页 / 共 2 页
字号:
#ifndef ___GRBCAPS_H
#define ___GRBCAPS_H

#include <lvcamdef.h>

#include <lvpackon.h>

/** @defgroup GrabberCapabilities Grabber capabilities. */


// Color formats
/** @defgroup LvCap_ColF Color formats definitions
 * @ingroup GrabberCapabilities
 * Possible color format flags returned when asking for _LvGrabCap::LvGC_ColorFormat capability.
 */
//@{
#define LvCap_ColF_RGB_888a     0x00000001 /**< 32-bit color format, each color (R,G,B) has 8bits and the last 8 bits is for alpha channel (not used). */
#define LvCap_ColF_RGB_555a     0x00000002 /* Obsolete. 16-bit HiColor format where each color (R,G,B) has exactly 5 bits and the last bit is unused. */
#define LvCap_ColF_RGB_565      0x00000004 /**< 16-bit HiColor format where red and blue colors has 5 bits and green color has 6 bits. */
#define LvCap_ColF_Mono_8       0x00000008 /**< 8-bit mono color format, in 8bits is saved black value of current pixel. */
#define LvCap_ColF_RGB_888      0x00000010 /**< 24-bit color format, each color (R,G,B) has 8 bits. */
/* Obsolete. 8-bit color format - YUV.
 * @code
 * |_U1_|_Y1_|_V1_|_Y2_|_U3_|_Y3_|_V3_|_Y4_| ....
 * \_________________/ \_________________/
 *    Pixel 1 and 2       Pixel 3 and 4
 * @endcode
 * YUV is not an absolute color space. It is a way of encoding RGB information, 
 * and the actual color displayed depends on the actual RGB colorants used to 
 * display the signal. Therefore a value expressed as YUV is only predictable if 
 * standard RGB colorants are used (i.e. a fixed set of primary chromaticities, 
 * or particular set of red, green, and blue).
 */
#define LvCap_ColF_YUV_422      0x00000020
/** 24-bit color format - YUV.
 * Each pixel includes eight bits for the Y1 value, eight bits for the U1 value, and eight bits for the V1 value.
 */
#define LvCap_ColF_YUV_444      0x00000040
#define LvCap_ColF_Mono_16      0x00000080 /**< 16-bit color format, black value has 16bits. */
#define LvCap_ColF_Mono_15      0x00000100 /**< 15-bit color format, black value has 15bits. */
#define LvCap_ColF_Mono_14      0x00000200 /**< 14-bit color format, black value has 14bits. */
#define LvCap_ColF_Mono_13      0x00000400 /**< 13-bit color format, black value has 13bits. */
#define LvCap_ColF_Mono_12      0x00000800 /**< 12-bit color format, black value has 12bits. */
#define LvCap_ColF_Mono_11      0x00001000 /**< 11-bit color format, black value has 11bits. */
#define LvCap_ColF_Mono_10      0x00002000 /**< 10-bit color format, black value has 10bits. */
#define LvCap_ColF_Mono_9       0x00004000 /**< 9-bit color format, black value has 9bits. */
/** 24-bit color format, each color component has 8bits, image is saved in planar format.
 * This mean that in 3x3 pixel 24-bit image you will find:
 * @code
 *   RRRRRRRRRGGGGGGGGGBBBBBBBBB
 * @endcode
 * each color has 8bits
 */
#define LvCap_ColF_RGBPlanar_8  0x00008000
#define LvCap_ColF_RGBPlanar_10 0x00010000 /**< 48-bit color format, similar to @ref LvCap_ColF_RGBPlanar_8 but each component has 10bits. */
#define LvCap_ColF_RGBPlanar_12 0x00020000 /**< 48-bit color format, similar to @ref LvCap_ColF_RGBPlanar_8 but each component has 12bits. */
#define LvCap_ColF_RGBPlanar_16 0x00040000 /**< 48-bit color format, similar to @ref LvCap_ColF_RGBPlanar_8 but each component has 16bits. */
//@}

// Scaler type
/** @defgroup LvCap_Scaler_Definitions Scaler capability definitions.
 * @ingroup GrabberCapabilities
 * Possible scaler capabilities which could be acquired when asking for _LvGrapCap::LvGC_Scaler.
 */
//@{
#define LvCap_NoScaler         0x00000000  /**< Grabber has no scaler. */
/** The target supports fine scaling down to pixel or line resolution.
 * Several old grabbers supported only binary scaling - it mean by skipping/doubling of
 * pixels. This scaling is done by interpolation methods.
 */
#define LvCap_FineScaler       0x00000001 /**< Grabber has capability to do scaling by interpolation method. It means no skipping of pixels as binary scaler do... */
#define LvCap_BinaryScaler     0x00000002 /* obsolete */
#define LvCap_ScaleMax768      0x00000004 /* obsolete */

#define LvCap_HasScaler        (LvCap_FineScaler | LvCap_BinaryScaler) /**< Grabber has FineScaler and BinaryScaler. */
//@}
// Lock Mask
#define LvCap_NoLockMask       0x00000000 /* obsolete */
#define LvCap_1BitLockMask     0x00000001 /* obsolete */

// Mirror
/** @defgroup LvCap_Mirror Grabber mirror capability definitions.
 * @ingroup GrabberCapabilities
 * Possible grabber mirror capabilities after asking for _LvGrapCap::LvGC_Mirror. 
 * Returns the mirror type supported by the queried target.
 */
//@{
#define LvCap_NoMirror         0x00000000 /**< Grabber has not mirror capability */
#define LvCap_HMirror          0x00000001 /**< Grabber has horizontal mirror capability */
#define LvCap_VMirror          0x00000002 /**< Grabber has vertical mirror capability */
#define LvCap_HVMirror         0x00000003 /**< Grabber has both of horizontal and vertical capabilities */
#define LvCap_MirrorMax768     0x00000004 /* obsolete */
//@}

// Rotation
/** @defgroup LvCap_Rotation Grabber rotation capability definitions.
 * @ingroup GrabberCapabilities
 * Possible grabber rotation capabilities after asking for _LvGrapCap::LvGC_Rotation.
 * It means if grabber could rotate acquired image around some degrees (supported 
 * is 90,180 and 270 degrees) in clock-wise direction.
 */
//@{
#define LvCap_NoRotation       0x00000000  /**< Grabber has no rotation capability. */
#define LvCap_Rotation_90      0x00000001  /**< Grabber can rotate image around 90 degrees in clock-wise direction. */
#define LvCap_Rotation_180     0x00000002  /**< Grabber can rotate image around 180 degrees in clock-wise direction. */
#define LvCap_Rotation_270     0x00000004  /**< Grabber can rotate image around 270 degrees in clock-wise direction. */
#define LvCap_Rotation_Free    0x00000008
//@}

// BayerDecoder
/** @defgroup LvCap_BayerDec Grabber Bayers decoder capability definitions.
 * @ingroup GrabberCapabilities
 * Possible BayerDecoder capabilities after asking for _LvGrapCap::LvGC_BayerDecoder.
 * Some cameras could send images to grabber as bayer encoded. It mean that every pixel is
 * represented as (8/10/12)bits value and right RGB value of each pixel could be counted from
 * the neighbourhood pixel state.
 * Bayer data could be presented as:
 * @code
 *   R | G | B | G | R | G | B | G | ...
 *   G | B | G | R | G | B | G | R | ...
 *   B | G | R | G | B | G | R | G | ...
 *   G | R | G | B | G | R | G | B | ...
 *   ...
 * @endcode
 * and there exist several computation methods how to get full RGB image.
 */
//@{
#define LvCap_NoBayerDec       0x00000000 /**< Grabber has no Bayer decoder capability. */
#define LvCap_BayerDec_8       0x00000001 /**< Bayer decoding from 8 bit monochrome images. */
#define LvCap_BayerDec_10      0x00000002 /**< Bayer decoding from 10 bit monochrome images. */
#define LvCap_BayerDec_12      0x00000004 /**< Bayer decoding from 12 bit monochrome images. */
#define LvCap_BayerLine_1k     0x00000100 /**< Bayer decoding handles up to 1024 pixels per line. */
#define LvCap_BayerLine_2k     0x00000200 /**< Bayer decoding handles up to 2048 pixels per line. */
#define LvCap_BayerLine_Any    0x00000300 /**< Bayer decoding handles any amount of pixels per line. */
//@}

// Color rotation
#define LvCap_NoColorRotation  0x00000000
#define LvCap_ColorRotation    0x00000001

// Gain/Offset
#define LvCap_NoGainOffset     0x00000000
#define LvCap_GainOffset2x12   0x00000001
#define LvCap_GainOffsetRGB    0x00000002
#define LvCap_Gain48           0x00000004
#define LvCap_Gain26           0x00000008
#define LvCap_Offset111        0x00000010
#define LvCap_Offset17         0x00000020

// Input type
#define LvCap_In_None          0x00000000
#define LvCap_In_Analog        0x00000001    /* Analog video. */
#define LvCap_In_Digital       0x00000002    /* Digital video. */
#define LvCap_In_CamLink       0x00000006    /* CamLink cameras. */
#define LvCap_In_LineScan      0x00000008    /* Line scan cameras. */
#define LvCap_In_SlaveCamera   0x00000010    /* Slave cameras. */
#define LvCap_In_DualChannel   0x00000020    /* Dual taps (channel) cameras. */
#define LvCap_In_Progressive   0x00000040    /* Progressive video format. */
#define LvCap_In_Interlaced    0x00000080    /* Interlaced video format. */
#define LvCap_In_Color         0x00000100    /* Colors are handled. */

// Opto properties
/** @defgroup LvCap_Opto Properties of the on-board optocouplers.
 * @ingroup GrabberCapabilities
 * Possible values returned after asking for __LvGrapCap::LvGC_OptoIn or _LvGrapCap::LvGC_OptoOut.
 * The returned value is a combination of the following values.
 */
//@{
#define LvCap_OptoInvPolarity  0x00000001
#define LvCap_OptoNotify       0x00000002  /**< \b Input \b only, the application can be notified about changes in optocoupler input state. */
#define LvCap_OptoCfgPolarity  0x00000004  /**< The active polarity can be configured by the application. */
#define LvCap_DistributedOpto  0x00000008
#define LvCap_TimerOutMux      0x00000010  // Output only, internal use
#define LvCap_SubGrbIO         0x00000020
//@}


// Fpga type
/*? @defgroup LvCap_Fpga The type of firmware on the board.
 * @ingroup GrabberCapabilities
 * Possible values returned after asking for _LvGrapCap::LvGC_Fpga.
 */
#define LvCap_NoFpga           0x00000000 /*?< No LVSDS handled firmware. */
#define LvCap_FpgaStatic       0x00000001 /*?< The firmware is initialized on system boot and it is not reloaded on LVSDS start. */
#define LvCap_FpgaNeedPwrOff   0x00000002 /*?< After an upgrade, the system needs to be powered off to take the new firmware in effect. */
#define LvCap_FpgaReload       0x00000004 /*?< The firmware is reloaded at each LVSDS startup. */


/** @defgroup LvCap_Lut The type of Look Up Tables (LUT) present on the grabber and that can be set by the application.
 * @ingroup GrabberCapabilities
 * Possible values returned after asking for _LvGrapCap::LvGC_Lut.
 */
//@{
#define LvCap_NoLut            0x00000000
#define LvCap_MonoLut8bit      0x00000001 /**< Monochrome LUT 8bit. */
#define LvCap_RGBLut8bit       0x00000002 /**< RGB LUT, usually composed by 3 monochrome 8bit LUTs, one per color component. */
#define LvCap_MonoLut12bit     0x00000004 /**< Monochrome LUT 12bit. */
#define LvCap_GammaCorrection  0x00000008 /**< Gamma correction on predefined factors. */
#define LvCap_BayerLUT         0x00000010 /**< LUT used by the on-board Bayer decoder. */
//@}

/** @defgroup LvGC_IrqSet The IRQ definition set to be used to get notifications from LVSDS about IRQs on the current grabber.
 * @ingroup GrabberCapabilities
 * Possible values returned after asking for _LvGrapCap::LvGC_IrqSet.
 */
//@{
#define LvCap_NoIrq            0x00000000 /**< LVSDS does not support IRQ notification on the current grabber. */
#define LvCap_IrqPicPort       0x00000001 /**< The board supports the PicPort-Analog IRQ set (Int_xxx). */
#define LvCap_IrqPicProdigy    0x00000002 /**< The board supports the PicProdigy IRQ set (PKT_xxx). */
#define LvCap_IrqPicPortPro    0x00000003 /**< The board supports the PicPortPro IRQ set (RXI_xxx). */
#define LvCap_IrqTw6800        0x00000004 /**< The board supports the PicPortLite IRQ set (LXI_xxx). */
/** The board supports the "bus cameras" - PicSight-GigE/PicSight-USB).
 * ... when they are accessed through the dedicated per-camera grabber objects (PicSight @a Nickname/PicSight USB @a Nickname)
 */
#define LvCap_IrqCN            0x00000005
#define LvCap_IrqPicPortElite  0x00000006 /**< The board supports the PicPort-Elite IRQ set (YXI_xxx). */
/** The board supports the "bus cameras" - PicSight-GigE/PicSight-USB.
 * ... when they are accessed through the generic bus grabber objects (referred to as 'GigE'/ 'USB')
 */
#define LvCap_IrqBus           0x00000007
//@}

// Driver and memory
#define LvCap_NoDriver         0x00000000
#define LvCap_KernelDriver     0x00000001
#define LvCap_UserDriver       0x00000002
#define LvCap_MemNoLock        0x00010000

// Sequencer Dral support
/** @defgroup LvGC_SeqDralSupport_Sequencer DRAL types.
 * @ingroup GrabberCapabilities
 * Possible returned type after asking for _LvGrapCap::LvGC_SeqDralSupport.
 * The Sequencer Dral types supported by the board.
 */
//@{
#define LvCap_NoSequencer               0x00000000
#define LvCap_RPSSequencer              0x00000001 /*?< The Sequencing is implemented with code executed by the onboard controller (PicPort-Analog boards). */
#define LvCap_SeqDral_Base              0x00000002 /**< The board supports Base Sequencing. */
#define LvCap_SeqDral_Enh               0x00000004 /**< The board supports Enhanced Sequencing. */
#define LvCap_SeqDral_Flash             0x00000008 /*?< The board supports Enhanced Sequencing with flash control. */
#define LvCap_SeqDral_FIM               0x00000010 /*?< The board supports Enhanced Sequencing with flash control in frame integration mode */
#define LvCap_SeqDral_FIMAR             0x00000020 /*?< The board supports Enhanced Sequencing with flash control in frame integration mode with integrated asynchronous reset mode. */
#define LvCap_SeqDral_AR                0x00000040 /**< The board supports Enhanced Sequencing with integrated asynchronous reset mode. */
#define LvCap_SeqDral_FrameLock         0x00010000 /**< The board supports locking of buffers. */
#define LvCap_SeqDral_MissTrgDetection  0x00020000 /**< The board supports detection of missing/lost triggers. */
//@}

// LvGC_MiscFlag
/** @defgroup LvGC_Flag Miscellaneous flags.
 * @ingroup GrabberCapabilities
 * Possible returned values after asking for _LvGrapCap::LvGC_MiscFlag
 */
//@{
#define LvCap_NoFlag            0x00000000
#define LvCap_Flag_BRSFixed     0x00000001
#define LvCap_Flag_Max4MBImg    0x00000002
#define LvCap_Flag_EventSem     0x00000004
#define LvCap_Flag_FrameAbort   0x00000008 /**< Frame could be aborted during its acquiring. */
#define LvCap_Flag_PCI64Address 0x00000010
#define LvCap_Flag_PoCLMonitor  0x00000020 /**< The board implements a PoCL monitoring mechanism. */

//@}

// LvGC_ReserveStatus
#define LvCap_NotReserved        0x00000000
#define LvCap_ReservedToOtherApp 0x00000001
#define LvCap_ReservedToThisApp  0x00000002

// LvGC_Scan_0
#define LvCap_Scn_Interlaced                          (1<<Scn_Interlaced)
#define LvCap_Scn_NotInterlaced                       (1<<Scn_NotInterlaced)


/** @defgroup LvGC_Scan_0 Tap formats.
 * @ingroup GrabberCapabilities
 * Possible returned values after asking for _LvGrapCap::LvGC_Scan_0. 
 * There exist several methods how to acquire image from camera to grabber.
 * Each cameras chip preffer some different method, so the grabber has to support this
 * method too.
 * Camera could send image data in 1,2 or in 4 taps (channels). Each of these taps could
 * use different format of pixel flow.
 * - 1 tap format sends the data only in one channel, in format pixel-after-pixel, line-after-line, eg. 1.1,1.2,1.3,...,1.n
 * - 2 tap format sends the data using two channels but in several formats:
 *   - 1.1,1.2,1.3,...,1.n,2.n,...,2.3,2.2,2.1 for every line
 *   - 1.1,1.2,1.3,...,1.n,2.1,2.2,2.3,...,2.n for every line
 *   - 1.n,...,1.3,1.2,1.1,2.1,2.2,2.3,...,2.n for every line
 *   - and so on
 *   - or using two lines
 *     - every odd line 1.1,1.2,1.3,1.4,...,1.n
 *     - every even line 2.1,2.2,2.3,2.4,...,2.n
 *     
 * - 4 tap format sends the data using four pixels using several formats - these formats are combinations of several methods,
 *   see \b CameraEditor \b manual or see \b CameraEditor \b application for several possibilities
 */
//@{
/** 2-line, 2 taps, 2 lines, Not Interlaced
 * @code
 *   1.1, 1.2, 1.3, 1.4, ... , 1.n
 *   2.1, 2.2, 2.3, 2.4, ... , 2.n
 * @endcode
 */
#define LvCap_Scn_ParallelField_NI                    (1<<Scn_ParallelField_NI)

/** 2-line, 2 taps, 2 lines, Interlaced
 * @code
 *   1.1, 1.2, 1.3, 1.4, ... , 1.n
 *   2.1, 2.2, 2.3, 2.4, ... , 2.n
 * @endcode
 */
#define LvCap_Scn_ParallelField_I                     (1<<Scn_ParallelField_I)

/** 1-line, 2 taps, 1 line, Not Interlaced
 * @code
 *   1.1, 2.1, 1.2, 2.2, 1.3, 2.3, 1.4, 2.4, ... 1.n, 2.n
 * @endcode
 */
#define LvCap_Scn_ParallelPixel_NI                    (1<<Scn_ParallelPixel_NI)

/** 1-line, 2 taps, 1 line, Interlaced
 * @code
 *   1.1, 2.1, 1.2, 2.2, 1.3, 2.3, 1.4, 2.4, ... 1.n, 2.n
 * @endcode
 */
#define LvCap_Scn_ParallelPixel_I                     (1<<Scn_ParallelPixel_I)

/** Half-line, 2 taps, 1 line, Not Interlaced

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -