[CSharp]把WebCam當QRCode的DeCode解碼器

QRCode的使用可分成編碼EnCode及解碼DeCode二部份,在各種平台上也有需多人依據編碼規則製作了許多可用的解碼與編碼器,之前文章也介紹過 [Java]QRCode產生VCard使用的是swetake這個framework,不過現在已經有統一的單位在研究 ZXing ("Zebra Crossing") ,而且各種平台上均提供原始碼供大家使用,對於解碼DeCode、解碼EnCode及歪斜辨識效果、速度都讓人滿意。

二維條碼Quick Response Code的發展上大都份落在手機平台上,在桌機上不像是一般的一維條碼有專用的條碼機,所以在就只能利用WebCam的影像解析功能,即時拍照給QRCode解碼器zxing解碼DeCode。

執行畫面:

產生QRCode,使用kayway網站來產生QRCode

generator.png




Start可以開始取得WebCam影像資料,而Stop會停止,Continue其實跟Start功能是一樣的。

openform.png

解碼成功時會顯示於下方TextBox,並停止再解碼,影像取得並不停止,使用continue會再次開始解碼QRCode。

QRCodeDecode.png

範例使用的是C#來製作Windows程式,使用的套件有zxing及WebCam_Capture,其中WebCam_Capture會使用到剪貼簿功能,大概是利用此功能來傳遞WebCam與GUI原件間的圖像,如果需要在解碼後複製內容的話,需要把WebCam功能停止,而解碼失敗判定則直接利用zxing解碼失敗會產生Exception,因為解碼速度很快,幾乎不會感覺到delay的狀況。ps.會慢的話是WebCam_Capture在慢。




23 comments on “[CSharp]把WebCam當QRCode的DeCode解碼器

  1. 版主您好:
    版主所發布的這篇剛好與我現在作的論文有關,不知是否可請版主提供開發環境。
    謝謝您~

  2. 請問一下這個掃描器
    用webcam拍攝
    由於我用在手機上
    手機上的qrcode不是有個定位的方塊
    產生的方塊大小如何改變
    想把定位方快變大 有辦法嗎

    製作qrcode的方法是從大大上一篇產生qrcode出來的^^

    • 其實那個方塊是個假像而已...
      只是利用一個遮色片遮在那裡而已...
      並不會真的影響解碼能力

  3. this.textBox1.Text = "checking";
    System.Drawing.Bitmap img = new System.Drawing.Bitmap(this.pictureBox1.Image, this.pictureBox1.Image.Size);
    thread1 obj = new thread1(img, this);
    System.Threading.Thread t = new System.Threading.Thread(obj.runMe);

    t.Start();

    上面段source code 是放在哪的??

    我用eclipse 可以用這段code嗎??

  4. 版主您好:
     我想請問關於QRcode解碼的部份是否有C/C++的範例程式,或有可以更改輸入跟輸出方式的解碼範例,因為已經蒐尋很久實在找不到,所以想求助於版主,我的開發環境是Visual Studio 2008。

    • 其實不一定的....zxing他就提供多種程式語言的方式decode跟encode,你可以參考看看
      或著如果怕麻煩的話直接取用它complier好的dll,用程式呼叫dll指令也是可以的

  5. vCard 可以用WEBCAM scan嗎?scan其他可以,但vCard 是error??
    加我的msn ok?? (就是那個email,,我是香港的)

  6. 版主你好:
    請問該如何在thread1的class外(form1的class裡面)取得他解碼出來的文字呢?

  7. 版主你好:
    請問如何在thread1的class外面(form1的class裡面)取得解碼出來的字串呢?

  8. 版主你好:
    請問有沒有方法可以得知被分析的qrcode是位於圖片中的何處呢?

  9. 版主您好,請問您有在Win10下執行過嗎?

    我依照這個方法在開發環境Win7筆電下可以使用,
    但是拿到測試的Win10平板上,就無法開啟WebCam

    按下"Start"後出現錯誤訊息如下:

    An error ocurred while capturing the video image. The video capture will now be terminated.
    並未將物件參考設定為物件的執行個體

    請問是否有解??

    麻煩您了!

發表迴響