Web摄像机如何读取条码?本教程将分享在Barcode Reader SDK中用Web摄像机当做条码读取器读取条码。以C#代码为例为大家展示:
当用户启动开始时,摄像机里面所产生的画面作为图片。
// <summary> /// Function to read barcodes from image (used by new created Thread object) /// </summary> public void <span data-scayt_word="startImageProcessing" data-scaytid="2">startImageProcessing</span>() { try { // work while user has not changed the status to false (i.e. false <span data-scayt_word="meanse" data-scaytid="3">meanse</span> user canceled the scan) while (STATUS) { // get current frame bitmap from camera using <span data-scayt_word="Touchless" data-scaytid="4">Touchless</span> lib Bitmap bitmap = MANAGER.CurrentCamera.GetCurrentImage(); // search for bar codes <span data-scayt_word="findBarcodes" data-scaytid="5">findBarcodes</span>(bitmap); // wait for a little to lower the CPU load Thread.Sleep(SCAN_DELAY); } } catch { ; // suppress errors if any } }
BarCode Reader SDK浏览图片读取条码
/// <summary> /// Finds barcodes from bitmap object /// </summary> /// <param name="img">input bitmap private void <span data-scayt_word="findBarcodes" data-scaytid="8">findBarcodes</span>(Bitmap <span data-scayt_word="img" data-scaytid="10">img</span>) { // create barcode object Reader reader = new Reader(); // limit to <span data-scayt_word="1D" data-scaytid="12">1D</span> barcodes search only (<span data-scayt_word="2d" data-scaytid="14">2d</span> are not included to speed up search) // change to SymbologyFilter.FindAll to scan for all possible <span data-scayt_word="1D" data-scaytid="13">1D</span> and <span data-scayt_word="2D" data-scaytid="15">2D</span> barcodes reader.TypeToFind = <span data-scayt_word="GetBarcodeTypeToFindFromCombobox" data-scaytid="16">GetBarcodeTypeToFindFromCombobox</span>(); // you may optimize processing by setting number of barcodes per page //reader.MaxNumberOfBarcodesPerPage = 1; // read barcodes from bitmap reader.ReadFrom(<span data-scayt_word="img" data-scaytid="11">img</span>); // save current time String <span data-scayt_word="timeNow" data-scaytid="17">timeNow</span> = string.Format("{0:<span data-scayt_word="HH" data-scaytid="19">HH</span>:mm:<span data-scayt_word="ss" data-scaytid="20">ss</span>:<span data-scayt_word="tt" data-scaytid="21">tt</span>}", DateTime.Now); // check barcode scan results if (reader.FoundBarcodes.Length > 0) { textAreaBarcodes.SelectionStart = 0; textAreaBarcodes.SelectionLength = 0; textAreaBarcodes.SelectedText = "\<span data-scayt_word="nTime" data-scaytid="22">nTime</span>: " + <span data-scayt_word="timeNow" data-scaytid="18">timeNow</span> + "\n"; // insert barcodes into the text area output <span data-scayt_word="foreach" data-scaytid="23">foreach</span> (<span data-scayt_word="FoundBarcode" data-scaytid="24">FoundBarcode</span> barcode in reader.FoundBarcodes) { // make a sound that we found the barcode (not working on <span data-scayt_word="x64" data-scaytid="25">x64</span> due to Microsoft changed it) Console.Beep(); // form the string with barcode value String <span data-scayt_word="barcodeValue" data-scaytid="26">barcodeValue</span> = String.Format("Found: {0} {1}" + "\r\n", barcode.Type, barcode.Value); // add barcode to the text area output textAreaBarcodes.SelectedText = <span data-scayt_word="barcodeValue" data-scaytid="27">barcodeValue</span> + "\n"; // add barcode to the list of saved barcodes m_foundBarcodes.Add(barcode); // increase counter of found barcodes <span data-scayt_word="foundBarcodesCount" data-scaytid="28">foundBarcodesCount</span>++; // update status text with number of barcodes lblFoundBarcodes.Text = String.Format("Found {0} barcodes:", <span data-scayt_word="foundBarcodesCount" data-scaytid="29">foundBarcodesCount</span>); } } // make flickering for "Scanning..." label lblScanning.Visible = !lblScanning.Visible; lblScanning.Update(); }