获取相机参数时发现,结构体变量错位,导致提取的参数不正确
可能原因:函数内部是通过内存拷贝的方式赋值,但是软件双方使用的结构体内部变量顺序不一致导致参数错位
例如如下结构体:
struct CS_BRIGHTNESS_CONTRAST_STRUCT{
bool useBrightnessAndContrast;
INT16 brightness[COLOR_CHANNELS];
**DOUBLE gamma_correction;**
DOUBLE contrast[COLOR_CHANNELS];
// Initialization of the struct
CS_BRIGHTNESS_CONTRAST_STRUCT() {
useBrightnessAndContrast = false;
for(int i = 0; i < COLOR_CHANNELS; i++)
{
brightness[i] = 0;
contrast[i] = 1.0;
}
gamma_correction = 1.0;
}
} ;
struct CS_BRIGHTNESS_CONTRAST_STRUCT{
bool useBrightnessAndContrast;
INT16 brightness[COLOR_CHANNELS];
DOUBLE contrast[COLOR_CHANNELS];
**DOUBLE gamma_correction;**
// Initialization of the struct
CS_BRIGHTNESS_CONTRAST_STRUCT() {
useBrightnessAndContrast = false;
for(int i = 0; i < COLOR_CHANNELS; i++)
{
brightness[i] = 0;
contrast[i] = 1.0;
}
gamma_correction = 1.0;
}
} ;
最终发现官网的结构体长这个样,错误的原因是之前竟然有人把官方结构体文件改了,或者是后面头文件更新了。
COLOR_CHANNELS = 3;
MAX_SENSOR_LINES = 4;
struct CS_BRIGHTNESS_CONTRAST_STRUCT{
bool useBrightnessAndContrast;
INT16 brightness[MAX_SENSOR_LINES];
DOUBLE contrast[MAX_SENSOR_LINES];
DOUBLE gamma_correction;
// Initialization of the struct
CS_BRIGHTNESS_CONTRAST_STRUCT() {
useBrightnessAndContrast = false;
for(int i = 0; i < MAX_SENSOR_LINES; i++)
{
brightness[i] = 0;
contrast[i] = 1.0;
}
gamma_correction = 1.0;
}
} ;
Variable type Element name D