In the past two weeks, I trained a custom YOLOv3 model for QR code detection and tested it with Darknet. In this article, I will use OpenCV’s DNN (Deep Neural Network) module to load the YOLO model for making detection from static images and real-time camera video stream. Besides, I will use Dynamsoft Barcode Reader to decode QR codes from the regions detected by YOLO.Read more
Django is a popular framework of Python for web development. In this tutorial, we will create an web application with Django and Dynamic Web TWAIN.Read more
On StackOverflow, you may have seen this kind of question: why some open-source barcode SDK failed to decode some barcode? Usually, there are three optional workarounds: improve the input image quality, improve the barcode algorithm, or find a better barcode SDK. ZXing and ZBar are probably the most-welcomed open-source barcode SDKs, but their algorithms rarely enhanced over the past years. Why not use commercial barcode SDK if free SDK is not ideal? Last week, I published an article demonstrating how to use ZXing and ZBar in Python. In this article, I will show you how to use Dynamsoft Barcode Reader in Python, as well as compare its performance to ZXing and ZBar.Read more
When creating a barcode reader app with a free barcode SDK, you may come up with ZXing instantly. ZXing is an open-source barcode reading and decoding library implemented in Java. There are some third-party projects, either ports or bindings, available for other programming languages. So if you want to create a Python barcode reader, you can use Python ZXing, which is a Python wrapper for invoking ZXing Java class. If you care about the performance, we can use Python ZBar, a Python wrapper for the ZBar C++ code, as a comparison.Read more
When I was using CPython to create the Python barcode extension with Dynamsoft Barcode Reader, I had to take concern for the compatibility of Python versions. However, I’m reluctant to install all Python versions in my operating system. To test the compatibility of my Python barcode app in Windows, I picked Docker container as the workaround.Read more
When scanning barcodes, the recognition rate is affected by image quality. If a barcode image is severely damaged, the barcode algorithm may fail to work. Fortunately, most of the linear barcodes (1D barcode) are printed with corresponding texts. OCR (optical character recognition) algorithm could be a complement to the barcode algorithm in such a scenario. In this article, I will share how to use Tesseract OCR to boost the barcode scan.Read more
AppVeyor is a continuous integration (CI) service used to automatically build code projects and deploy relevant artifacts. It provides build environments for Windows, Linux, and macOS. In this article, I will share how to use AppVeyor to build and deploy Python Wheels (Windows edition) from C/C++ code.Read more
Direct Part Marking (DPM) is a process to mark equipment with some information, such as barcodes, permanently. The typical DPM barcode symbologies include DataMatrix and QR code. Since version 7.2, Dynamsoft Barcode Reader SDK has been capable of decoding DPM barcodes. In this article, I will share how to create a simple python barcode reader to read the DPM DataMatrix code.
When evaluating an image processing and recognition SDK, image dataset is vital for benchmarking the performance. Google is absolutely the best place for finding and downloading required images. An automation tool would be handy for getting amounts of image files rapidly. In this article, I will share how to use Python to download barcode images from Google, as well as how to test Dynamsoft Barcode Reader SDK with the image set.
Three years ago, I created a Python extension module for Dynamsoft Barcode Reader C/C++ SDK. The code skeleton has never been changed until recently the SDK updated to v7.0. In the latest barcode SDK, besides the values of barcode symbologies, there are more constant variables needed to be predefined. The original Python barcode extension is initialized only with some methods, and now I have to add some object members. The article shares the code I’ve refactored in order to add Python object members.