You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
3 months ago | |
|---|---|---|
| .. | ||
| zint | 3 months ago | |
| .gitignore | 3 months ago | |
| CMakeLists.txt | 3 months ago | |
| README.md | 3 months ago | |
| demo_reader.py | 3 months ago | |
| demo_writer.py | 3 months ago | |
| init.py | 3 months ago | |
| pyproject.toml | 3 months ago | |
| test.py | 3 months ago | |
| zxing.cpp | 3 months ago | |
README.md
Python bindings for zxing-cpp
The package uses scikit-build-core as its build backend and nanobind for the Python bindings.
Installation
pip install zxing-cpp
To build from a checked out / extracted soruce tree, a suitable build environment including a C++20 compiler is required:
pip install .
Usage
Reading barcodes
import cv2, zxingcpp
img = cv2.imread('test.png')
barcodes = zxingcpp.read_barcodes(img)
for barcode in barcodes:
print('Found barcode:'
f'\n Text: "{barcode.text}"'
f'\n Format: {barcode.format}'
f'\n Content: {barcode.content_type}'
f'\n Position: {barcode.position}')
if len(barcodes) == 0:
print("Could not find any barcode.")
Writing barcodes
import zxingcpp
from PIL import Image
barcode = zxingcpp.create_barcode('This is a test', zxingcpp.BarcodeFormat.QRCode, ec_level = "50%")
img = barcode.to_image(scale = 5)
Image.fromarray(img).save("test.png")
svg = barcode.to_svg(add_quiet_zones = False)
with open("test.svg", "w") as svg_file:
svg_file.write(svg)
To get a full list of available parameters for read_barcodes and create_barcode as well as the properties of the Barcode objects, have a look at the nanobind module definition in this C++ source file.