自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 利用USB摄像头,免费快速搭建浏览器远程监控

用OpenCV实现桌面的摄像头程序很简单,把这部分代码集成到一个简单的HTTP server上就可以实现浏览器远程监控。 OpenCV安装 我这里使用了opencv4nodejs: npm i opencv4nodejs 安装的时间会有点长,需要先下载OpenCV源码再编译。如果发现编译不通过,...

2020-07-10 13:48:50 21 0

原创 用树莓派4,OLED,USB摄像头搭建条形码扫描设备

最近618优惠,买了树莓派4,打算给娃当电脑用。到手之后先自己玩了下,做了一个简单的扫码程序。 树莓派4相关硬件采购 树莓派4的4GB版本。官方定价65美金,京东300减40到手389。 Micro HDMI转HDMI线。树莓派4更换了电源接口。 HDMI母对母转接头。用于延长HDMI线。 树莓...

2020-06-10 17:56:36 57 0

原创 如何在Android设备上识别读取美国驾照信息

根据美国机动车管理者协会(AAMVA https://www.aamva.org/DL-ID-Card-Design-Standard/)的规定,美国驾照使用PDF417编码,如下图: Google Mobile Vision SDK 谷歌服务是支持驾照解析的,可以在Mobile Vision ...

2020-06-02 10:50:36 50 0

原创 如何解决MinGW应用_ZNSt18condition_variable10notify_oneEv不存在的问题

今天用MinGW的GCC在Windows里编了一个简单的命令行barcode识别程序: gcc -o demo ReadBarcode.cpp -L . -lDynamsoftBarcodeReader -lstdc++ 结果在运行的时候发生错误: 搜了一下发现这个接口是libstdc++里的...

2020-05-27 17:01:18 43 0

原创 小米盒子3S刷国际版

买了华为电视,本来想把小米盒子卖给京东回收(就值30),后来想找找有没有国际版系统。网上搜了下,找了个教程(http://www.hdpfans.com/thread-807822-1-1.html),按照步骤操作就搞定了。这里就提几个注意事项。 小米盒子的型号如果不知道,可以在底部查看。 需要...

2020-05-21 12:44:59 250 0

原创 C++实现DotCode扫码

Dynamsoft Barcode SDK v7.4支持DotCode类型。我用C++写了一个简单的示例。 DotCode桌面扫码程序 Dynamsoft SDK中提供了两种类型的接口: 一种是直接扫码的接口,比如decodeFile, decodeBuffer。 一种是为视频流设计的接口Sta...

2020-05-12 14:24:40 177 0

原创 vscode不写一行配置,用cmake傻瓜式搭建C++编译调试环境

网上看了一些用vscode+cmake搭建C++编译调试环境的帖子,基本差不多,都要写一个配置文件。其实根本不用这么麻烦。安装的工具是一样的,但是操作可以更加简单。 VSCode + CMake超简单用法 首先安装好平台上的C++编译器,这里不多说。 然后安装vscode中的C++,cmake,c...

2020-05-11 10:31:24 63 0

原创 如何在Linux上构建发布包含.so动态库的snap安装包

Linux上要发布源码包比较容易,只要做个压缩包.tar.gz就可以。但是如果要做一个包含库和可执行文件的安装包,就比较麻烦。Linux的版本很多,需要做不同格式的安装包,比如.deb和.rpm,同时还需要做很多测试。现在有了Snap这个包管理系统,就会方便很多。Snap支持所有主流的Linux系...

2020-05-07 13:25:06 103 0

原创 使用OpenCV Java创建Windows摄像头扫码程序

OpenCV提供了一些基本的Webcam控制接口。用OpenCV C/C++或者Python,可以在任意平台快速创建一个摄像头预览应用。然而使用Java,情况就复杂的多,因为OpenCV Java并没有提供一个类似于imshow的窗口显示接口。想要创建一个带界面的应用,就需要通过OpenCV接口获...

2020-04-26 14:51:47 92 0

原创 Windows中如何通过PowerShell脚本开关摄像头

笔记本的摄像头是内置的,无法直接插拔。有时候想要禁用摄像头,只能去设备管理器里操作。我的笔记本上有两个摄像头 ,小米这个是内置的,要禁用需要右键选择禁用,而罗技的C920不想用可以直接拔掉。 每次打开设备管理器,再点击操作比较麻烦,如果可以用脚本控制就会方便很多。我们可以使用PowerShell...

2020-04-17 12:06:31 139 0

原创 如何用DirectShow替代付费的摄像头SDK

Dynamsoft Barcode SDK安装包里自带了一个功能强大的扫码Demo,这个Demo支持的条形码扫描功能包括文件读取,扫描仪图像读取,以及摄像头视频流读取。 然而扫描仪和摄像头的调用功能并不是免费的,需要用到Dynamic .NET TWAIN这个商用SDK。这篇文章分享下如何去掉扫...

2020-04-08 15:15:12 70 0

原创 DotCode二维码基本概念

什么是DotCode? DotCode是由不连续的点组成的二维条形码符号。 设计的目的是为了工业流水线上,使用高速喷墨和激光打印机印刷产品有效期,批号,以及序列号。 DotCode的特点 支持ASCII字符集 使用9个点来表示一个codeword DotCode二维码的尺寸是灵活可...

2020-03-26 17:15:53 491 0

原创 Java条形码SDK示例:命令行,界面,网络

这篇文章分享下ZXing和Dynamsoft Java Barcode SDK在三种场景下的使用。 Java Barcode应用 我的测试图片包含了各种类型的条形码。 在Maven的配置文件中添加ZXing和Dynamsoft Barcode Reader: <repositories&g...

2020-03-17 17:58:10 95 0

原创 Tesseract.js (JavaScript OCR) 识别1D条形码下面的数字

在做条形码识别的时候,有可能碰到条形码因为被破坏,无法识别的情况。通常1D条形码的下面都印着对应的数字。这个时候还可以借助下OCR。虽然OCR的成功率可能不高,但是多一种识别方法也是好的。这里分享下如何用Tesseract.js来识别一张1D条形码。 如何使用Tesseract.js 使用npm的...

2020-02-20 09:36:57 400 3

原创 华为P30 Pro vs 红米Note8 Pro: 用数据对决相机

网上有很多相机评测,大部分都是靠肉眼。这种评测因人而异。比较专业的是DXOMARK,华为和小米现在都热衷晒分数。很多小白用户可能和我一样,根本分不清华为,iPhone,小米在同样场景下拍摄照片的差异。既然人眼无法判断,那就交给机器。我决定做一个测试,对比华为P30 Pro和红米Note8 Pro的...

2019-11-15 15:07:09 739 0

原创 如何通过WASI SDK 在Linux上编译ZXing C++

Mozilla在今年三月份的时候公布了WASI。WASI的目标就是让WebAssembly在任何地方都可以运行,而不仅仅像现在这样只能运行在Node.js和Web浏览器中。WASI目前依然处于初级阶段,这篇文章分享下如何把ZXing C++通过WASI Libc编译成wasm文件。 支持WASI运...

2019-10-24 10:28:00 142 0

原创 如何读取直接零件打标码(DPM)

DPM(Direct Part Marking), 中文翻译成直接零件打标,指的是在工业零件(如汽车轮毂,电路板等)表面永久打标文字或可读取符号,如DataMatrix和QR二维码。这种条形码的识别难度比较大。Dynamsoft Barcode Reader SDK v7.2开始支持DPM的条形码...

2019-10-10 16:56:08 381 0

原创 基于标签的Web文档图片分类

Dynamic Web TWAIN的最新版本支提供了Tag管理接口。可以很轻松的给扫描之后的图片进行标记分类。这篇文章分享下如何使用。 Web文档图片分类 创建一个HTML文件,并引用Dynamic Web TWAIN的JS文件: <script type="text/javasc...

2019-09-25 09:03:31 62 0

原创 iOS和Android多摄像头拍摄

现在的手机摄像头越来越多,多摄像头拍摄很有趣,比如华为P30上的双摄像头摄影。这里收集了一些关于iOS和Android多摄像头开发的信息。 iOS 多摄像头 系统版本 v13+ 设备 iPhone XS, XS Max, XR and iPad Pro AVFoundation接口 Virtual...

2019-08-15 11:01:35 362 0

原创 如何用Python控制LEGO Wedo 2.0的电机

乐高官方提供的编程工具都是图形化的,这篇文章分享下如何用Python来连接控制LEGO Wedo 2.0中提供的蓝牙主控设备和电机。 学习资源 网上有两篇很有用的文章: Controlling a WeDo 2.0 motor WeDo 2.0 – reverse engineering 使用...

2019-05-14 13:48:19 689 0

原创 Windows Linux子系统使用rustup重新安装Rust

在Windows的Linux子系统上安装Rust,习惯性的用了sudo apt install cargo。结果发现全部安装之后的Rust并不是最新版本。想要用Rust官方提供的脚本安装最新版本却出现错误: error: it looks like you have an existing ins...

2019-04-28 14:24:01 907 0

原创 PWA(Progressive Web App)是否会成为手机小程序和Native App终结者

目录什么是PWAPWA的优势PWA vs 微信小程序PWA vs Native AppPWA条形码应用示例PWA会在国内流行吗 什么是PWA PWA简单的说就是像Native App一样可以安装运行的Web程序。Native App通过app store安装,而PWA通过浏览器安装。 PWA的优势...

2019-04-15 15:41:21 262 0

原创 如何用Python实现树莓派远程视频流扫码

树莓派由于硬件配置低,在运行复杂计算的时候会比较吃力。为了解决这种瓶颈,可以考虑云计算。这篇文章分享下如何通过树莓派发送视频流到远程服务器做条形码识别。 环境配置 树莓派3 Model B+ Python 2.7 Dynamsoft Barcode Reader SDK 安装 树莓派 下载Op...

2019-03-21 15:39:28 400 0

原创 如何用React, Webcam和JS Barcode SDK创建Web扫码App

这篇文章分享下如何结合React Webcam和Dynamsoft JavaScript Barcode SDK来创建Web扫码App。 Web实时扫码 从GitHub上下载react-webcam.js放到React工程中。 打开这个JS文件。在render()函数中添加一个button和can...

2019-03-01 15:15:49 218 0

原创 如何在Linux环境中运行Dynamic Web TWAIN的文件扫描上传示例

Dynamic Web TWAIN示例代码中,文件扫描上传只提供了ASP.NET的实现。要在Linux中运行.NET Framework的代码需要用Mono。 Ubuntu中安装Mono 通过命令行查看下系统版本: $lsb_release -a No LSB modules are availa...

2019-02-22 17:03:19 145 0

原创 如何用QtPy创建Webcam扫码应用

之前分享了如何用QtPy和Dynamsoft Barcode Reader创建一个简单的桌面应用, 通过加载一张图片来识别条形码。这篇文章要分享如何加上摄像头的支持做实时扫码。 如何用Python和PyQt代码显示Camera视频流 要获取视频流,最简单的方法就是用OpenCV: pip inst...

2019-02-01 10:42:52 153 0

翻译 Dynamsoft JavaScript Barcode SDK性能解析

Dynamsoft JavaScript Barcode SDK是基于WebAssembly实现的。它的优势在于可以直接运行在任何平台的任何浏览器中。然而不同的浏览器,对WebAssembly的支持以及性能表现也是不同的。 不同浏览器的性能数据 影响WebAssembly的因素包括网络连接,硬件...

2019-01-30 15:28:03 162 0

原创 如何用Qt Python创建简单的桌面条形码应用

Qt for Python可以快速跨平台的GUI应用。这篇文章分享下如何结合Dynamsoft Barcode Reader SDK来创建一个简单的读码应用。 安装Qt for Python 官方站点可以下载对应的wheel文件,或者通过命令行安装: pip install pyside2 我之...

2019-01-25 10:26:36 394 0

原创 如何在React工程中使用JavaScript Barcode SDK创建Web条形码应用

基于WebAssembly构建的Dynamsoft JavaScript Barcode SDK让Web开发者能够创建适用于浏览器的高性能条码应用。这篇文章分享下如何使用React快速创建一个简单的Web条形码扫描应用。 下载 Node.js 用React和JS Barcode SDK搭建HTML...

2019-01-17 16:01:31 210 0

原创 Panorama全景扫码应用分享

现代化的仓储管理是要追求自动化,扫码是必不可少的环节。携带传感器,摄像头的工业机器人可以对货架上的包裹进行扫码跟踪。机器人的工作效率至关重要。假如是逐个扫描包裹,花的时间最长,效率肯定是最低的。要提高效率,就要批量扫描包裹。这就是使用Panorama扫码的价值。这里分享下自带Panorama全景扫...

2019-01-12 14:45:39 277 0

原创 如何通过Web扫描文档并上传到阿里云OSS

文档电子化是大势所趋,配合云存储可以给用户提供完美的解决方案。这篇文章分享下如何通过Web快速扫描文档,并上传到阿里云中。 Web文档扫描 Dynamic Web TWAIN是目前最出色的Web文档扫描SDK,支持Windows,Linux和macOS。 申请一个30天的试用License。 创建...

2018-12-29 16:35:09 564 0

原创 如何打造不亚于原生应用的Web扫码App

现在扫码功能特别火,各种各样的App都会自带扫码功能,比如购物,账号登录。除了移动平台,桌面平台也需要扫码功能,比如文档管理系统,阅卷系统。对开发者来说,兼顾性能的跨平台的开发语言和框架是最佳选择,比如React Native,Cordova,Flutter,Xamarin。这个时候微信弄出来一个...

2018-12-18 13:56:33 227 0

原创 如何在Windows上制作一个包含.lib和.dll的Rust Crate包

最近看了下Rust,作为系统编程语言,真的是很复杂。我计划做一个简单的Rust模块,用于调用Dynamsoft Barcode Reader SDK,然后打包发布到https://crates.io/。 制作发布Rust Crate包 创建Rust lib工程: cargo new dbr --l...

2018-10-17 14:31:30 979 0

原创 如何把Windows,Linux和macOS的动态链接库封装到一个Java Jar包中

通过JNI,我们可以让Java调用C/C++的库。C/C++的库是平台相关的。要让依赖JNI动态链接库的Java开发包跨平台,需要把各个平台的库都封装到一个Jar包里。这篇文章分享下如何基于Dynamsoft Barcode Reader,用CMake为Windows,Linux和macOS快速构...

2018-09-27 15:37:45 306 0

原创 如何利用Web Worker优化网页条码识别应用

现在主流的浏览器都支持WebRTC,通过getUserMedia可以在浏览器中轻松打开摄像头。Web开发者可以使用JavaScript开发网页版的条码扫描应用。通过Chrome和Safari的测试发现,当JS代码耗时多的时候,Chrome中的视频依然流畅,而Safari出现严重卡顿。推测Chrom...

2018-09-04 15:15:01 179 0

原创 如何利用多进程优化Python视频应用

如果要用Python播放视频,或者打开摄像头获取视频流,我们可以用OpenCV Python。但是在视频帧获取的时候同时做一些图像识别和处理,可能会因为耗时多而导致卡顿。一般来说,我们首先会想到把这些工作放入到线程中处理。但是由于Python GIL的存在,用不用线程几乎没有区别。所以要解决这个问...

2018-09-04 13:32:56 834 0

原创 JavaScript条形码SDK比较:Node.js C/C++扩展 vs WebAssembly

高性能的算法库通常都是用C/C++编写。当你想要用JavaScript来开发条形码商业应用,你有两个选择:1.通过node-gyp来编译一个Node.js C/C++扩展。2.把C/C++代码编译成WebAssembly。这里基于Dynamsoft Barcode Reader来做一个比较。 序...

2018-08-14 15:20:43 569 1

原创 如何在Node.js中使用WebAssembly

WebAssembly的一个优点是编译生成的wasm文件,既可以用于Web客户端,也可以用于运行在任何操作系统的Node.js服务端。 编译 创建一个简单的test.c: #include &amp;lt;stdlib.h&amp;gt; #include &...

2018-08-14 11:15:32 2126 0

原创 Dynamsoft WebAssembly条形码SDK预览

WebAssembly(Wasm)是一种用于Web开发的革命性技术。 它让运行在Web浏览器中的前端应用拥有媲美原生应用的速度。使用WebAssembly,可以方便地把C / C ++代码移植到Web前端,通过JavaScript调用。Dynamsoft最近即将推出用于Web前端开发的WebAss...

2018-07-17 10:29:29 521 0

原创 Barcode识别:如何应对多条形码和复杂场景

越来越多的移动应用内置扫码功能。包括微信在内,有相当一部分app的扫码功能是基于ZXing这个开源库开发的。终端用户的需求比较简单,通常情况下我们只需要扫描一个条形码,比如购物,付款。然而,在商用场景中,往往需要同时处理多个条形码,比如仓储,物流。图像的质量也参差不齐。在多码及复杂场景中,ZXin...

2018-07-03 14:49:48 6250 0

提示
确定要删除当前文章?
取消 删除