zbar中的zbar scan image 函式

2021-09-29 05:59:47 字數 2200 閱讀 7927

影象掃瞄的工作都是由zbar_scan_image完成的,zbar_scan_image主要根據設定的掃瞄密度(density)控制畫素點讀取(z字形),scanner.c檔案內的zbar_scan_y()來完成濾波,閾值,確定邊緣,轉化成寬度流。

int zbar_scan_image (zbar_image_scanner_t *iscn,

zbar_image_t *img)

else

zbar_symbol_set_ref(syms, 2);

img->syms = syms;

unsigned w = img->width;

unsigned h = img->height;

const uint8_t *data = img->data;

zbar_image_write_png(img, "debug.png");

svg_open("debug.svg", 0, 0, w, h);

svg_image("debug.png", w, h);

zbar_scanner_t *scn = iscn->scn;

int density = cfg(iscn, zbar_cfg_y_density);

if(density > 0)

assert_pos;

quiet_border(iscn);

svg_path_end();

movedelta(-1, density);

iscn->v = y;

if(y >= h)

break;

zprintf(128, "img_x-: %04d,%04d @%p\n", x, y, p);

svg_path_start("vedge", -1. / 32, w, y + 0.5);

iscn->dx = iscn->du = -1;

iscn->umin = w;

while(x >= 0)

assert_pos;

quiet_border(iscn);

svg_path_end();

movedelta(1, density);

iscn->v = y;

}svg_group_end();

}iscn->dx = 0;

density = cfg(iscn, zbar_cfg_x_density);

if(density > 0)

assert_pos;

quiet_border(iscn);

svg_path_end();

movedelta(density, -1);

iscn->v = x;

if(x >= w)

break;

zprintf(128, "img_y-: %04d,%04d @%p\n", x, y, p);

svg_path_start("vedge", -1. / 32, h, x + 0.5);

iscn->dy = iscn->du = -1;

iscn->umin = h;

while(y >= 0)

assert_pos;

quiet_border(iscn);

svg_path_end();

movedelta(density, 1);

iscn->v = x;

}svg_group_end();

}iscn->dy = 0;

iscn->img = null;

#ifdef enable_qrcode

_zbar_qr_decode(iscn->qr, iscn, img);

#endif

/* fixme tmp hack to filter bad ean results */

if(syms->nsyms && !iscn->enable_cache &&

(density == 1 || cfg(iscn, zbar_cfg_y_density) == 1))

else

symp = &sym->next;}}

if(syms->nsyms && iscn->handler)

iscn->handler(img, iscn->userdata);

svg_close();

return(syms->nsyms);

}

ZBar在Windows上的使用

1.1 預設安裝 注意勾選上development headers and libraries 安裝完成後可在zbar安裝路徑下找到examples資料夾,用vs2008及以上編譯器可以開啟工程檔案 由於許可權問題,部分機器可能要將examples資料夾拷貝至其他目錄下執行 在工程屬性中可以看見例程...

zbar和zxing之間的對比

zbar移植的是c原始碼,zxing移植的是c 兩者對比 1.zxing支援更多的碼制 datamatix pdf417 等,zbar不能很好支援pdf417 但是在原始碼中有對於pdf417碼處理 3.zbar和zxing 兩者都不能 很好的支援 條碼掃瞄,在攝像頭解析度低,目標條碼列印在曲面上或...

Python中的descriptor中的一點疑問

在我的印象中,類中的函式是可以有兩種呼叫方式的,如下 class b def func self return 10 b b b.func b.func b 於是,在之前研究descriptor的時候,我就有了幾點困惑 我將 更換成了如下兩個版本 版本1 import time class lazy...