python利用網路攝影機頭掃QR code(data Matrix) 不支援

872 views
Skip to first unread message

馬國薰

unread,
Dec 24, 2014, 8:57:39 PM12/24/14
to pyth...@googlegroups.com
先聲明一下不是大學專題之類的東西
我使用opencv開啟網路攝影機頭,把圖片儲存之後再使用QR-tools去解碼圖片,其實掃QR code已經成功了,但是對data-Matrix的格式卻不行
主要找了zbar跟QR-tools還有ZXing,不過zbar只支援Linux,ZXing只支援java
不知道有沒有甚麼方法可以解dataMatrix的格式??

knot

unread,
Dec 25, 2014, 10:57:22 AM12/25/14
to pyth...@googlegroups.com
有試過 zbar binary 嗎?



馬國薰於 2014年12月25日星期四UTC+8上午9時57分39秒寫道:
先聲明一下不是大學專題之類的東西
我使用opencv開啟網路攝影機頭,把圖片儲存之後再使用QR-tools去解碼圖片,其實掃QR code已經成功了,但是對data-Matrix的格式卻不行
主要找了zbar跟QR-tools還有ZXing,不過zbar只支援Linux,ZXing只支援java
不知道有沒有甚麼方法可以解dataMatrix的格式??

馬國薰

unread,
Dec 25, 2014, 9:31:24 PM12/25/14
to pyth...@googlegroups.com
版本(0.10)嘗試了一下,用命令列讀取不到datamartix,一般的QR都沒問題,有找到解決辦法(需要更改原始檔匯入新的解碼格式),但是windows裡的zbar似乎已經綁成執行檔
目前找到確定可以解的有

ZXing跟pyDataMatrixScanner

pyDataMatrixScanner需要在安裝libdmtx,為了安裝這個用虛擬機cywin去GCC拉出dll檔,然後讓python用ctypes去抓,結果

執行找不到相關檔案,安裝沒有說明.dll檔應該放在甚麼地方,還需要甚麼東西
ZXing目前還在找尋資料,如果有對windows跟python的平台有支援的麻煩在請幫忙謝謝

馬國薰

unread,
Dec 25, 2014, 10:19:20 PM12/25/14
to pyth...@googlegroups.com

pyDataMatrixScanner(目前嘗試中)

pyDataMatrixScanner要先安裝libdmtx,然後libdmtx在windows需要cywin,我照著步驟拉出dll檔,然後讓python用ctypes去抓,結果執行找不到相關檔案,安裝沒有說明.dll檔應該放在甚麼地方,還需要甚麼東西才能在windows平台下執行

如果有其他方案可以支援的就拜託各位幫忙了!!!!!


libdmtx的README
http://libdmtx.wikidot.com/libdmtx-on-windows-using-mingw

knot

unread,
Dec 27, 2014, 2:39:25 AM12/27/14
to pyth...@googlegroups.com

libdmtx 就有python wrapper了不用透過ctype
直接在cygwin環境下使用python wrapper 就行了, 不過這也算是linux了,因為可以在windows上
透過cygwin/mingw run跟可以拿到windows上使用是二回事

from pydmtx import DataMatrix
from PIL import Image

# Write a Data Matrix barcode
dm_write = DataMatrix()
dm_write.encode("Hello, world!")
dm_write.save("/home/gordi_000/hello.png", "png")

# Read a Data Matrix barcode
dm_read = DataMatrix()
img = Image.open("/home/gordi_000/hello.png")

print dm_read.decode(img.size[0], img.size[1], buffer(img.tostring())) # Hello, world!

print dm_read.count()
print dm_read.message(1)
print dm_read.stats(1)





要能夠在windows上不透過cygwin執行,只能用visual studio編譯安裝libdmtx
或者在cygwin/mingw cross compile(怎麼做這我也很想知道 :D)

或試試用libdmtx裡的 dmtxread 執行檔,以command line的方式讀取
 (binary package有安裝說明 但我的電腦一直不能執行dmtxread(dll錯誤),不知道是不是ImageMagick版本的問題)





馬國薰於 2014年12月26日星期五UTC+8上午11時19分20秒寫道:

馬國薰

unread,
Dec 27, 2014, 4:05:48 AM12/27/14
to pyth...@googlegroups.com
謝謝你的回應!!
因為想要在windows系統下執行,移植到其他電腦也比較容易
目前先嘗試在cywin裝PIL安裝到一半跑出以下資訊

_imagingft.c:73:31: 嚴重錯誤:freetype/fterrors.h:No such file or directory
 #include <freetype/fterrors.h>

似乎在cywin跟一般linux的路徑位置沒有對上,所以安裝library會有些問題
之後還要裝openCV,可能安裝其他library也會有不少問題


我另外嘗試了一下ZXing,他支援的種類看起來相對多種,還有C++的,照著這兩個資料嘗試了一下ZXing
教學裡面的build.xml在官方的文件上沒有
https://github.com/zxing/zxing/
https://github.com/oostendo/python-zxing
使用ant跑完之後回去開tests.py跑出

無法執行或載入 com.google.zxing.client.j2se.CommandLineRunner

在這樣感覺真的要用C++去跑了.........

knot於 2014年12月27日星期六UTC+8下午3時39分25秒寫道:

knot

unread,
Dec 27, 2014, 4:37:34 AM12/27/14
to pyth...@googlegroups.com
在/lib 底下有個freetype2
把freetype2 複制一份改為freetype就ok了

另外你還要裝


gcc
make
automake
pkg-config
autoconf
libtool
libSM-devel
libXt-devel
ImageMagick
libMagick-devel
cygwin 底下沒有apt-get 只有 apt-cyg

用法 apt-cyg install packagename







馬國薰於 2014年12月27日星期六UTC+8下午5時05分48秒寫道:

knot

unread,
Dec 27, 2014, 4:56:24 AM12/27/14
to pyth...@googlegroups.com

更正是 /usr/include/freetype2
複制一份改為 /usr/include/freetype

PS: libdmtx 可以在cygwin上安裝,包括wrapper (因為我剛剛才裝的,包括cygwin)
至於opencv 有for cygwin (沒裝過)








馬國薰於 2014年12月27日星期六UTC+8下午5時05分48秒寫道:

馬國薰

unread,
Dec 27, 2014, 5:38:23 AM12/27/14
to pyth...@googlegroups.com
剛剛試了一下,程式成功跑起來了,但是網路上抓的圖片卻抓不到,之後搭配pyDataMatrixScanner在試試看好了
因為openCV如果要開啟windows的攝影機頭不知道會不會有問題,這點我過幾天會在嘗試看看
感謝你的回覆

knot於 2014年12月27日星期六UTC+8下午5時56分24秒寫道:

knot

unread,
Dec 27, 2014, 10:04:01 AM12/27/14
to pyth...@googlegroups.com




網路上找了一張



 output: www.pegasusimaging.com Pegasus Imaging Corporation


 output: www.pegasusimaging.com Pegasus Imaging Corporation


output: www.pegasusimaging.com Pegasus Imaging Corporation


output: www.pegasusimaging.com Pegasus Imaging Corporation


output: www.pegasusimaging.com Pegasus Imaging Corporation


這張就













馬國薰於 2014年12月27日星期六UTC+8下午6時38分23秒寫道:

馬國薰

unread,
Dec 28, 2014, 12:28:33 AM12/28/14
to pyth...@googlegroups.com
我使用這個網站上的圖片去讀是沒讀到,查了一下他還有ECC的格式,不知道問題是不是在這裡,明天我再試試看用你提供的圖片,順便看看openCV有沒有辦法在cywin開啓windows上的攝影機頭,如果不行的話
可能在windows端開啓python刷新圖片,在利用cywin去抓圖片掃,雖然很笨好像只有這方法了Orz

http://www.quickmark.com.tw/Cht/qrcode-datamatrix-generator/default.asp?dmText

我把產生圖片的部分給刪掉留下讀圖片的部分,把圖片檔跟執行檔放在同一個資料夾


from pydmtx import DataMatrix
from PIL import Image

‘’‘
# Write a Data Matrix barcode
dm_write = DataMatrix()
dm_write.encode("Hello, world!")
dm_write.save("/home/gordi_000/hello.png", "png")
’‘’

# Read a Data Matrix barcode
dm_read = DataMatrix()
img = Image.open("hello.png")

print dm_read.decode(img.size[0], img.size[1], buffer(img.tostring())) # Hello, world!

print dm_read.count()
print dm_read.message(1)
print dm_read.stats(1)

knot於 2014年12月27日星期六UTC+8下午11時04分01秒寫道:
knot於 2014年12月27日星期六UTC+8下午11時04分01秒寫道:
knot於 2014年12月27日星期六UTC+8下午11時04分01秒寫道:
knot於 2014年12月27日星期六UTC+8下午11時04分01秒寫道:
knot於 2014年12月27日星期六UTC+8下午11時04分01秒寫道:

馬國薰

unread,
Dec 29, 2014, 3:33:10 AM12/29/14
to pyth...@googlegroups.com
回報一下我目前的狀況,我找到IronPython來開啟.NET的程式,因為ZXing有提供.NET的語法
所以成功讀取到dataMatrix了,之後麻煩的就是python的一些library要重新安裝,雖然很麻煩,但是已經解決最麻煩的問題了
感謝knot先生的幫忙,讓我過程中也知道了很多小技巧,接下來嘗試把openCV跟PIL,numpy等裝到cygwin裡面,開啟了攝影機頭應該就完成了
希望不要再遇到問題了= ="

馬國薰於 2014年12月28日星期日UTC+8下午1時28分33秒寫道:
...
Reply all
Reply to author
Forward
0 new messages