h5页面实现扫码功能
2023-02-18 16:41:44 时间
目前在做一个移动端扫码功能,发现市面上h5实现扫码功能的案例很少,quagga.js 已经很久没有维护了,而且识别率低,根本用不了
使用webrtc和python 图片识别库实现 h5 页面扫码功能
- 使用getUserMedia 获取媒体流
- 使用video标签播放媒体流
- 使用canvas 将video 截图
- 使用定时器定时发送图片到 后端 Python 识别图片
代码 (本代码需要https 协议 getUserMedia(兼容查看) 和本地才能跑通 )
var video = document.querySelector(".bar_video");
var canvas = document.createElement("canvas");
var context = canvas.getContext("2d");
canvas.width = 640;
canvas.height = 480;
var constraints = { video: { facingMode: "environment" } };
navigator.mediaDevices
.getUserMedia(constraints)
.then(function (mediaStream) {
video.srcObject = mediaStream;
video.onloadedmetadata = function (e) {
video.play();
};
})
.catch(function (err) {
console.log(err.name + ": " + err.message);
});
setInterval(function () {
context.drawImage(
video,
0,
0,
(canvas.width = video.videoWidth),
(canvas.height = video.videoHeight)
);
var image = canvas.toDataURL("image/png");
$.ajax({
url: "/product/code",
type: "post",
data:{
phoneCode:image
},
success:function(res) {
},
error:function (err) {
console.log(err)
}
})
}, 5000);
后端代码
imgbase = kw.get("phoneCode") # 接受的图片
imgbase=imgbase.split(",")[1]
imgdata = base64.b64decode(imgbase)#解码
url =os.path.join(os.path.abspath(os.path.dirname(__file__)),"0.png")
file = open(url, 'wb')#保存为0.png的图片
file.write(imgdata)
file.close()
image=cv2.imread(url)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
texts = pyzbar.decode(gray)
print(texts)
if texts == []:
return json.dumps({"state": 400})
for text in texts:
code = text.data.decode("utf-8")
print(code)
后端参考文章 https://blog.csdn.net/qq_37924224/article/details/109582507
相关文章
- 技术生态两手抓,打造面向未来的企业级领先数据库
- 开发者必看,面试官心中的最佳数据库人才模型是什么样?
- 从相识到相惜:Redis与计算存储分离四部曲
- 面对key数量多和区间查询低效问题:Hash索引趴窝,LSM树申请出场
- 大数据处理黑科技:揭秘PB级数仓GaussDB(DWS) 并行计算技术
- 1秒启动Web Server
- 中心化交易所如何用Merkle Tree实现资产储备证明
- 揭秘GaussDB(for Redis):全面对比Codis
- 梦幻联动!金蝶&华为云面向大企业发布数据库联合解决方案
- 面对锁等待难题,数仓如何实现问题的秒级定位和分析
- 技术生态两手抓,打造面向未来的企业级领先数据库
- 看我如何连夜自建网站背刺我的求职对手们
- GaussDB拿下的安全认证CC EAL4+究竟有多难?
- 华为云开发者官网首页焕新升级,赋能开发者云上成长
- 从元宇宙、地产数字化到呼叫中心,华为云携手伙伴共创新价值
- 云享·人物丨造梦、探梦、筑梦,三位开发者在华为云上的寻梦之旅
- 华为云区块链三大核心技术国际标准立项通过
- 云小课|帮您高效快速上传组件至私有依赖库
- 一文详解GaussDB(DWS) 的并发管控和内存管控
- MemArts :高效解决存算分离架构中数据访问的组件