目录
该函数将原始图像数据转储到文件以进行调试。
zimg_hdr_t hdr;
hdr.magic = 0x676d697a;
hdr.format = img->format;
hdr.width = img->width;
hdr.height = img->height;
hdr.size = img->datalen;
数据将以16字节头作为前缀,包括:
4字节 uint=0x676d697a
4字节 fourcc格式
2字节 宽度
2字节 高度
4字节 图像数据的大小
int zbar_image_write (const zbar_image_t *img,
const char *filebase)
img是要转储的图像对象;filebase是文件名,格式为“.XXXX.zimg”,其中XXXX是fourcc的格式。
if(fwrite(&hdr, sizeof(hdr), 1, f) != 1 ||
fwrite(img->data, 1, img->datalen, f) != img->datalen) {
#ifdef HAVE_ERRNO_H
rc = errno;
zprintf(1, "ERROR writing %s: %s\n", filename, strerror(rc));
#else
rc = 1;
#endif
fclose(f);
goto error;
}
rc = fclose(f);
error:
free(filename);
return(rc);
成功时返回0,失败时返回系统错误代码。
zbar的processor是一种高级独立图像处理器,负责处理条形码的视频和图像,可以选择将图像显示到库所有的输出窗口。
void init (const char *video_device = "",
bool enable_display = true)
{
if(zbar_processor_init(_processor, video_device, enable_display))
throw_exception(_processor);
}
初始化processor,打开视频输入设备、准备显示输出。
void set_handler (Image::Handler& handler)
{
zbar_processor_set_data_handler(_processor, handler, &handler);
}
设置结果处理程序回调。
int set_config (zbar_symbol_type_t symbology,
zbar_config_t config,
int value)
{
return(zbar_processor_set_config(_processor, symbology,
config, value));
}
将指示符号的配置设置为指定值。
int set_config (std::string cfgstr)
{
return(zbar_processor_parse_config(_processor, cfgstr.c_str()));
}
设置从配置字符串解析的配置。
bool is_visible ()
{
int rc = zbar_processor_is_visible(_processor);
if(rc < 0)
throw_exception(_processor);
return(rc != 0);
}
检索输出窗口的当前状态。
void set_visible (bool visible = true)
{
if(zbar_processor_set_visible(_processor, visible) < 0)
throw_exception(_processor);
}
显示或隐藏库所拥有的显示窗口。
void set_active (bool active = true)
{
if(zbar_processor_set_active(_processor, active) < 0)
throw_exception(_processor);
}
在自由运行视频模式下控制处理器。
const SymbolSet get_results () const {
return(SymbolSet(zbar_processor_get_results(_processor)));
}
检索上次扫描图像的解码结果。
int user_wait (int timeout = FOREVER)
{
int rc = zbar_processor_user_wait(_processor, timeout);
if(rc < 0)
throw_exception(_processor);
return(rc);
}
等待用户对显示窗口的输入。
void process_one (int timeout = FOREVER)
{
if(zbar_process_one(_processor, timeout) < 0)
throw_exception(_processor);
}
从视频流开始处理,直到结果可用。
void process_image (Image& image)
{
if(zbar_process_image(_processor, image) < 0)
throw_exception(_processor);
}
Processor& operator<< (Image& image)
{
process_image(image);
return(*this);
}
处理提供的条形码图像。
void force_format (unsigned long input_format,
unsigned long output_format)
{
if(zbar_processor_force_format(_processor, input_format,
output_format))
throw_exception(_processor);
}
void force_format (std::string& input_format,
std::string& output_format)
{
unsigned long ifourcc = zbar_fourcc_parse(input_format.c_str());
unsigned long ofourcc = zbar_fourcc_parse(output_format.c_str());
if(zbar_processor_force_format(_processor, ifourcc, ofourcc))
throw_exception(_processor);
}
用于调试/测试的强制特定输入和输出格式。
void request_size (int width, int height)
{
zbar_processor_request_size(_processor, width, height);
}
从设备请求视频图像的首选大小。
void request_interface (int version)
{
zbar_processor_request_interface(_processor, version);
}
请求用于调试/测试的首选驱动程序接口版本。
void request_iomode (int iomode)
{
if(zbar_processor_request_iomode(_processor, iomode))
throw_exception(_processor);
}
为调试/测试请求首选I/O模式。