标签: barcode

图像到条码识别

我知道这已经在 stackoverflow 上讨论过几次,但我找不到足够的答案。对于一个项目,我正在寻找可以从输入图像中识别条形码数字的最好的软件/api/库。它将用于手机(iphone、windows mobile、android 等),因此它应该擅长从不良角度、模糊图像和此类恶劣条件下捕捉条码。开源或商业化并不重要,只要它做得好(确实开源会更好:))

如果您对此主题有任何经验,请与我们分享:)

谢谢

mobile barcode image-recognition barcode-scanner

5
推荐指数
1
解决办法
5520
查看次数

条码阅读器程序:条码识别方法

我是图像处理的新手,我想识别图像中的二维码。实际上有三个查找器模式,首先我需要找到它们。

所以我尝试了一些方法,首先是与二值化有关,但是当图像有阴影并且光照差异很大时,就很难做出好的二值化图像。实际上自适应阈值取决于滑动窗口的大小,这可能不适用于大条码。因此,即使我制作了一个好的二进制图像,您能否建议我找到条形码的查找模式和条形码本身的方法。最简单的方法,如果我们谈论 QRCode,就是找到图像的所有轮廓并选择那些方形并在里面包含两个方形轮廓的轮廓。

另一种方法是扫描图像的每条水平线以找到正确的取景器图案,这取决于二值图像的制作程度。

所以我看到了解决这个问题的方法,但我想知道还有其他不同的方法可以找到条码的查找模式吗?我认为模式匹配在这里不好。您还可以建议一种不依赖于光照的好的二值化方法。我尝试了很多自适应阈值二值化方法,但它们都有一个共同的问题,如果图像包含一个大的黑色方块,那么二值图像将不会有一个完整的方块,而是一个在方块中间有一些白色部分的方块,这个是因为自适应阈值法中滑动窗口的大小不够大。

image-processing barcode barcode-scanner

5
推荐指数
1
解决办法
4562
查看次数

任何免费的 UPC/条形码数据库

我正在寻找可供下载的免费 UPC 或条形码数据库。我看过 upcdataBase.com 和其他一些网站,但这些网站不允许免费下载数据库。文件类型不是一个大问题,因为我可以使用 SQL、csv、文本、XML、json 或其他任何东西。

有谁知道我在哪里可以找到一个?我不需要网络服务,我需要一个实际的文件或方法来下载某人拥有的所有 upcs 或条形码。一个大的包容性数据库会很棒,但即使是部分数据库也会很棒。谢谢

barcode

5
推荐指数
1
解决办法
1万
查看次数

Zxing 条码相机选项

我想将 zing 条码扫描仪集成到我的 android 应用程序中。所以我使用了zing积分器如下

public Button.OnClickListener mScan = new Button.OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent("com.google.zxing.client.android.SCAN");
        intent.setPackage("com.google.zxing.client.android");
        intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
        startActivityForResult(intent, 0);
    }};public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
            String contents = intent.getStringExtra("SCAN_RESULT");
            String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
            // Handle successful scan
        } else if (resultCode == RESULT_CANCELED) {
            // Handle cancel
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想在包含两个摄像头的 android 平板电脑(2.2 版)中实现这个应用程序。当我启动此功能时,它会自动开始使用后置摄像头(主)执行扫描,但根据我的应用需求,我需要仅使用前置摄像头执行条码扫描。有没有类似的选项

intent.putExtra("SCAN_MODE", "QR_CODE_MODE","FRONT_CAMERA"); 
Run Code Online (Sandbox Code Playgroud)
  1. 是否可以借助 zingintegrator 功能启用前置摄像头?如果没有,我是否需要实现整个 …

camera android barcode zxing

5
推荐指数
1
解决办法
4537
查看次数

C中的开源条码扫描仪?

我正在寻找任何开源软件,它接受网络摄像头流并扫描条形码,返回当前帧中条形码的值(如果有)。如果使用 C 语言将是首选,但欢迎使用任何其他语言。请注意,我对使用手机或单独的条码扫描仪不感兴趣。

c webcam barcode

5
推荐指数
1
解决办法
2452
查看次数

使用 ZXing 扫描多个条码

我目前正在尝试让 ZXing 扫描一些条形码。到目前为止,它的工作做得很好(通过意图)。

现在我想让它一次解码多个条形码(它们被放置在彼此下方)而不必单独扫描每个条形码。

这甚至可以通过意图实现吗?如果没有,将不胜感激如何以另一种方式做到这一点的简短示例:)

到目前为止,我只找到了一个非常古老的线程,其中用户请求了此功能,并且一些开发人员似乎已经集成了它。但是,我找不到任何解释使用的教程。

该线程可以在这里找到。

android barcode zxing

5
推荐指数
1
解决办法
5043
查看次数

这个计算 Code128 条码校验位的代码是否正确?

根据我对 Code128 条码校验位计算的理解*(与大多数其他标准条码类型完全不同/完全不同),我下面的代码是正确的。但是,我很感激那些可能更了解/有一些经验观察/从附着在他们的战壕(或实验室)外套上的战壕中的泥土的人进行的“健全性检查”。

  • 这是我的理解:

条形码中的每个字符,从左边开始,首先被转换成它的 ASCII 码(IOW,条形码字符“1”被视为它的 ASCII 码 49,等等),然后该值乘以其序数在字符数组中的位置。

例如,对于制造的条形码编号“123456789”,“1”相当于 49,“2”相当于 50,……“9”相当于 57。

然后,每个字符的序号位置乘以其 ASCII 值。例如,1*49 == 49、2*50==100、... 9*57==513。然后将所有这些相加,得出(在本例中)2,445。

下一步是将该数字除以 Code128“幻数”103;您感兴趣的值是模数。因此,在这种情况下,2445 % 103 == 76。

倒数第二 - 最后,您转换该值 (76),将其视为 ASCII 代码,将另一个方向返回到其“表示”值,即“L”。

最后,您将计算出的字符附加到原始条形码。确实如此(尽管有更多的麻烦或告别),您最终得到的值为“123456789L”

如果这不是正确的值,那么我理解错误。

以下是一些条形码:

0) 123456789
1) 12345678
2) 1234567
3) 123456
Run Code Online (Sandbox Code Playgroud)

...以及它们应该如何与计算出的校验位一起出现(并使用下面的代码):

0) 123456789L
1) 12345678N
2) 1234567*
3) 123456E
Run Code Online (Sandbox Code Playgroud)

最后但并非最不重要的是,这是我用来计算 Code128 校验位的代码:

private void buttonAppendCode128CheckDigit_Click(object sender, EventArgs e)
{
    const int CODE_128_DIVISOR = 103;
    string barCode = textBoxRawCode128.Text.Trim();
    int runningTotal = 0;

    for (int i = barCode.Length …
Run Code Online (Sandbox Code Playgroud)

c# barcode code128 barcode-printing

5
推荐指数
1
解决办法
1万
查看次数

在android上,detector.isOperational()总是假的

我正在使用新的谷歌播放服务:条形码检测器,对于这个porposue我正在遵循这个教程:https://search-codelabs.appspot.com/codelabs/bar-codes

但是,当我在我的真实设备(华硕Nexus 7)上运行应用程序时,应用程序的文本视图始终显示"无法设置检测器",我不知道如何使其工作> <.. .

这里有一些快速调试的代码:

public class DecoderBar extends Activity implements View.OnClickListener{

private TextView  txt;
private ImageView img;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_decoder);

    Button b = (Button) findViewById(R.id.button);
    txt = (TextView) findViewById(R.id.txtContent);
    img = (ImageView) findViewById(R.id.imgview);

    b.setOnClickListener(this);
}

// [...]

@Override
public void onClick(View v) {

    Bitmap myBitmap = BitmapFactory.decodeResource(getApplicationContext().getResources(),R.drawable.popi);
    img.setImageBitmap(myBitmap);

    BarcodeDetector detector = new BarcodeDetector.Builder(getApplicationContext())
            .setBarcodeFormats(Barcode.DATA_MATRIX | Barcode.QR_CODE)
            .build();

    if(!detector.isOperational()){
        // Always show this message, so, never is operational! …
Run Code Online (Sandbox Code Playgroud)

java android barcode

5
推荐指数
2
解决办法
6792
查看次数

需要帮助解压缩存储在Aztec条形码中的zlib数据(Deutsche Bahn Ticket)

前提

我正在尝试解码目前德国铁路(德国铁路)发行的机票上使用的条形码格式的数据.我发现这个非常有用的网站(德语)已经做了类似的事情,并提供了一个python脚本.

该网站声明数据被压缩zlib,生成的blob用DSA签名,所有这些都存储在条形码(Aztec格式)中. 这种条形码的示例

问题

我已经使用网站上提供的脚本成功解码了一张票.安装了python-pyasn1库.阅读条形码(根据说明使用BCTester,NeoReader应用程序遇到一些问题)并将结果转换为十六进制.将十六进制数据保存为纯文本文件(由于脚本所需的某些原因)并使用脚本解析文件.有效.

但剧本做得太多了.我想自己做解析,但我不能让zlib解压缩工作,我理解很少的代码来理解它.我几乎不知道Python.不过,我有一些编程经验.

如果您只是查看条形码中的数据,它看起来像这样:https: //gist.github.com/oelna/096787dc18596aaa4f5f

第一个问题是: 什么是DSA签名,我是否需要先从实际压缩数据中分离出来?

第二个: 一个简单的python脚本看起来像是从文件读取条形码blob并简单地解压缩它,所以我可以进一步解析格式.我有一些想法

#!/usr/bin python

import zlib

ticket = open('ticketdata.txt').read()

print zlib.decompress(ticket)
Run Code Online (Sandbox Code Playgroud)

但它不起作用.任何暗示正确的方向将不胜感激.

如果保存到文件,以下是脚本可读的十六进制数据:

23 55 54 30 31 30 30 38 30 30 30 30 30 31 30 2c 02 14 1c 3d e9 2d cd 5e c4 c0 56 bd ae 61 3e 54 ad a1 b3 26 33 d2 02 14 40 75 03 d0 cf 9c …
Run Code Online (Sandbox Code Playgroud)

python parsing zlib barcode aztec-barcode

5
推荐指数
1
解决办法
1173
查看次数

如何可靠地检测条形码的4个角?

我正在尝试使用Python + 模块检测此Code128条形码zbar:

(图像下载链接在这里).

这有效:

import cv2, numpy
import zbar
from PIL import Image 
import matplotlib.pyplot as plt

scanner = zbar.ImageScanner()
pil = Image.open("000.jpg").convert('L')
width, height = pil.size    
plt.imshow(pil); plt.show()
image = zbar.Image(width, height, 'Y800', pil.tobytes())
result = scanner.scan(image)

for symbol in image:
    print symbol.data, symbol.type, symbol.quality, symbol.location, symbol.count, symbol.orientation
Run Code Online (Sandbox Code Playgroud)

但是只检测到一个点:(596, 210).

如果我应用黑白阈值:

pil = Image.open("000.jpg").convert('L')
pil = pil .point(lambda x: 0 if x<100 else 255, '1').convert('L')    
Run Code Online (Sandbox Code Playgroud)

它更好,我们有3分:(596,210),(482,211),(596,212).但它增加了一个难度(找到最佳阈值 - 这里100 - 自动为每个新图像). …

python opencv barcode barcode-scanner zbar

5
推荐指数
1
解决办法
3100
查看次数