主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

Webカメラを使ったバーコードスキャン on python

                
tags: python zbar
scanning.jpg

先日せっかくpythonzbarを入れたので、pythonでWebカメラを使ったバーコードスキャンをやってみる。OpenCVとzbarを使う。

OpenCVがなければ……というより、Windows環境では下記がWebカメラからのキャプチャをするのにおすすめ。OpenCVは大きいから、Webカメラを使いたいだけなら不要なものが多い。
http://videocapture.sourceforge.net/

とっても簡単。まずOpenCVサンプルのfacedetect.pyの必要な部分以外削る。必要な部分とはWebカメラの使用準備とフレームキャプチャ。それでfacedetectの関数部分をバーコード検出に書き換えるだけ。

http://sourceforge.net/apps/mediawiki/zbar/index.php?title=HOWTO:_Scan_images_using_the_API#Python
次に↑に載っている画像ファイルからバーコード検出するスクリプトを参考に、
Webカメラからキャプチャした画像を解析するように適応させる。


#!/usr/bin/env python

import cv
import zbar
import Image
import time

def scanbar(img):
t=time.time()

#convert to grayscale
gray =cv.CreateImage( cv.GetSize(img),cv.IPL_DEPTH_8U,1)
cv.CvtColor(img, gray, cv.CV_BGR2GRAY)

# create a reader
scanner = zbar.ImageScanner()

# configure the reader
scanner.parse_config('enable')

# obtain image data
##pil = Image.open('barcode.png').convert('L')
width, height = gray.width, gray.height
raw = gray.tostring()

# wrap image data
image = zbar.Image(width, height, 'Y800', raw)

# scan the image for barcodes
scanner.scan(image)

# extract results
for symbol in image:
# do something useful with results
print 'decoded', symbol.type, 'symbol', '"%s"' % symbol.data

cv.ShowImage("result", img)
print "%f" % (time.time()-t)

if __name__ == '__main__':
capture = cv.CreateCameraCapture(int(0))

cv.NamedWindow( "result", 1 )
frame=''

if capture:
while True:
frame = cv.QueryFrame(capture)
scanbar(frame)

if cv.WaitKey( 10 ) >= 0:
break


↓にC,C++,python,perlでの使い方が載っています。
HOWTO: Scan images using the API


本ブログのOpenCVまとめ
OpenCV
            

コメントの投稿

非公開コメント

プロフィール

h

Author:h

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon