Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >损伤QrCode重构

损伤QrCode重构
EN

Stack Overflow用户
提问于 2019-01-18 02:40:36
回答 2查看 7K关注 0票数 0

图像下面的编辑是对原始图像进行预处理的序列.1.原始图像-> 2.模糊x n次使qrcode位置显着性-> 3.裁剪原始图像,使用blob -> 4从第二步提取位置.锐化和阈值-> 5.检查3平方的qrcode -> 6.进行额外的变换,如旋转-> (最终图像)(具有调整大小分辨率的裁剪图像).

老问题我正在尝试从原始图像中重建qrcode。如您所见,照片已经损坏了qrcode,所以我使用Aforge库从使用blob的图像中检测到3平方。现在我不明白的是从这些信息生成qrcode的逻辑。从技术上讲,是否有可能用给定的信息重构qrcode?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-18 04:14:42

这是个有趣的问题。回答你的问题,这在技术上是可能的吗。是的当然有可能。您问题中的QR代码编码为"5176941.12“。

这是预先拥有的图像,这样就可以更容易地手动设置像素。

在这个步骤之后,我使用excel逐个设置每个像素。在那之后,简单地把你的手机指向电脑屏幕。这就是看起来的样子。如果你想要excel表,你可以得到它这里

既然可能性的问题已经不存在了,该如何实现自动化呢?如果不知道更多的样品,就很难确定。然而,仅仅基于这个示例,最简单的方法就是在裁剪的QR图像上对齐21x21网格,并使用阈值填充这些值。然后把这个图像传递给你的QR解码器。QR代码有一定程度的冗余,因此即使缺少一些像素,您也很可能能够恢复原始数据。

编辑

下面是python中的一些代码,这些代码可以指导您如何实现自动化。有几件事要注意:

  • 我绕开了检测这三个盒子的步骤,手动地把它切得很紧。如果捕获过程中存在旋转,则需要修复它。
  • 阈值0.6需要针对不同的图像进行调整。现在,尽管存在多个错误,但“幸运”仍然有效。如果错误太大,可能永远不会有有效的qr代码。

代码:

代码语言:javascript
运行
AI代码解释
复制
import cv2
import numpy as np

def fill3box(qr):
    qr[0:7,0:7] = 1
    qr[14:21,14:21] = 1
    qr[14:21,0:7] = 1
    qr[0,0:6]=0
    qr[0:6,0]=0
    qr[0:6,6]=0
    qr[6,0:7]=0
    qr[2:5,2:5]=0
    qr[14:21,14:21] = qr[0:7,0:7]
    qr[14:21,0:7] = qr[0:7,0:7]
    return qr

im = cv2.imread('to_process.png')
im = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
im = cv2.resize(im,(210,210))

im = 1-((im - im.min())/(im.max()-im.min())) #normalize and adjust contrast
avg=np.average(im)
qr = np.ones((21,21))
w,h = im.shape[:2]
im_orig = im.copy()

im[im<avg]=0#binarize
im[im>avg]=1
for y in range(21):
    for x in range(21):
        x1,y1 = (round(x*w/21),round(y*h/21))
        x2,y2 = (round(x1+10),round(y1+10))

        im_box = im[y1:y2,x1:x2]
        if np.average(im_box)<0.6 and qr[y,x]!=0:#0.6 need tweaking
            qr[y,x]=0

qr = fill3box(qr) #clean up 3 box areas as they need to be fixed
# debug visualization
for x in range(21):
    p1 = (round(x*w/21),0)
    p2 = (round(x*w/21),h)
    cv2.line(im_orig,p1,p2,(255),1)

for y in range(21):
    p1 = (0,round(y*h/21))
    p2 = (w,round(y*h/21))
    cv2.line(im_orig,p1,p2,(255),1)

qr = cv2.resize(qr,(210,210),interpolation=cv2.INTER_NEAREST)

im = (im*255).astype(np.uint8)
qr= (qr*255).astype(np.uint8)
im_orig= (im_orig*255).astype(np.uint8)

cv2.imwrite('im.png',im)
cv2.imwrite('qr.png',qr)
cv2.imwrite('im_orig.png',im_orig)

在代码中裁剪图像to_process.png

将网格覆盖以显示此方法的工作方式。

清晰的图像。

重新生成的QR,请注意,即使存在多个错误,它仍然工作。

票数 7
EN

Stack Overflow用户

发布于 2019-01-18 03:03:50

这将是困难的。

如果您可以使用读取器来解码这个QR (我试过了,但失败了),那么就可以使用编写器重新编码它。但是不能保证作者会重新创建相同的代码,因为不同的编码选项是可能的。

如果你的目标实际上是能够破译,你就被困住了。解码“手工”可能是可能的,但是冗长和复杂的。您还可以考虑在完美的网格上手工重绘代码,并将其传递给读者。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54252250

复制
相关文章
Python-Qrcode介绍
最近关注的这些公众号都在说这个五六行代码生成二维码的库,就是这个qrcode,没错就是这么土土的名字。
云深无际
2021/04/14
7570
Python-Qrcode介绍
聊聊zxing的qrcode
core-3.3.1-sources.jar!/com/google/zxing/qrcode/QRCodeWriter.java QRCodeWriter的encode方法进行编码,转换为BitMatrix
code4it
2018/09/17
1.9K0
损伤失效
利用Abaqus进行有限元模拟的过程中,我们有时候需要考虑材料的非线性,当定义材料塑性应力应变关系时,我们必须采用真实应力和真实应变[1]。
联远智维
2022/01/20
1.7K0
损伤失效
YOLOv5:道路损伤检测
GRDDC'2020 数据集是从印度、日本和捷克收集的道路图像。包括三个部分:Train, Test1, Test2。训练集包括带有 PASCAL VOC 格式 XML 文件标注的道路图像。在给参赛者的数据Test1 和 Test2 中是没有标注。train则包含标注。
机器学习AI算法工程
2021/07/14
1.9K0
聊聊qrcode的detect position
本文主要介绍下qrcode的detect position,也就是定位图案,用于定位一张图片中二维码所处的位置。
code4it
2018/09/17
1.1K0
聊聊qrcode的detect position
Python中的qrcode入门
随着移动支付和电子票务等应用的普及,二维码作为一种快速、便捷的信息编码方式,已经广泛应用于各个领域。在Python中,我们可以使用qrcode库来生成和解析二维码,本文将带你入门qrcode在Python中的使用。
大盘鸡拌面
2023/10/20
4670
Py之qrcode:Python包之qrcode的简介、安装、使用方法之详细攻略
二维码简称 QR Code(Quick Response Code),学名为快速响应矩阵码,是二维条码的一种,由日本的 Denso Wave 公司于 1994 年发明。现随着智能手机的普及,已广泛应用于平常生活中,例如商品信息查询、社交好友互动、网络地址访问等等。
用户7886150
2020/12/23
1.6K0
重构学习-重构原则
什么是重构: 视上下文重构有两个不同的定义,第一个定义是名词形式 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本 重构的另一人用法是动词形式 使用一系列的重构手法,在不改变软件可观察行为的前提下调整其结构。 有人说重构就是整理代码 ,从某种角度上来说,是,但是重构不止于此,因为它提供了一种更为高效且受控的代码整理 技术,运用代码重构技术后你会发现对代码的整理会比以前更加高效。 重构的目的是使软件更容易被理解和侯。你可以在软件的内部做很多修改,但必须对软件可观察
lpxxn
2018/01/31
1.1K0
php qrcode 输出乱码怎么解决?
在执行生成二维码的那句代码之后添加die;或exit;即可。如果还是不行,可以用编程工具把.php文件转为“UTF-8 无BOM编码格式”
超级小可爱
2023/04/17
2.9K0
php qrcode 输出乱码怎么解决?
qrcode 创建二维码
二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。
用户6021899
2019/10/09
1.2K0
qrcode 创建二维码
python(pycharm)安装qrcode等模块失败
在了解 https://github.com/sdushantha/wifipassword/blob/master/wifi_password/wifi_password.py 文件复制到pycharm之后发现需要导入qrcode 和 colorama模块在安装时直接使用 pip insall qrcode时候会出现 Could not find a version that satisfies the requirement PIL 查阅csdn之后发现要输入
用户8447427
2022/08/18
1.1K0
python(pycharm)安装qrcode等模块失败
混凝土塑性损伤CDP模型的几个问题
在以往的课程和技文中都曾描述过混凝土塑性损伤(CDP)模型,但由于描述不够完整、清晰,还是给读者和学员留下不少的疑问,在这里表示歉意。我们先看看经常会被问到的几个问题:
用户学习笔记
2022/05/23
2.2K0
利用卡尺工具进行损伤检测
- 目录 - (1)图像输入:待处理图像及其缺陷放大图 (2)图像处理:卡尺工具处理细节 (3)处理结果:损伤部分缺失测量点 (4)原图及其代码:包含OK、NG原图、完整halcon代码 (5)主要
threeQing
2020/08/17
6120
利用卡尺工具进行损伤检测
【重构】重构概要--六大重构模块
重构方法介绍: 重构改善既有代码的设计 一 重新组织函数 关于注释 :要尽可能少的使用注释 , 注释越多代码的可读性反而更差,注释可以使用函数名来代替 , 不要管函数名有多长, 即使函数名比函数中的代码还要长也不要紧 ; 提炼函数 : 整理函数, 使函数恰当的封装代码 , 函数可以有效的替换注释。太长的函数会包含大量的信息 , 代码的可读性变得很差, 而且注释会很多 ,每隔一段都要添加一行注释,这样可读性变得很差 。比如,我们在一个方法中相关的代码进行了注释 ,这里我们就可以将这些相关代码提取出来 , 封装
韩曙亮
2023/03/27
7360
MCE| 熬夜导致DNA损伤、致癌
熬夜伤身,这是我们普遍认同的观点。熬夜致癌?多少人将信将疑,不就熬个夜,怎么就扯上癌症了?别急,您的 DNA 有话说。
MedChemExpress
2023/03/08
3120
MCE| 熬夜导致DNA损伤、致癌
重构
说到重构,我们再来了解一下定义:重构是一种对软件内部结构的改善,目的是在不改变软件的可见行为的情况下,利用设计思想、设计原则、设计模式编程规范等理论来优化代码。使其更易理解 (可读性),修改成本更低(可维护性),提升代码质量。
只喝牛奶的杀手
2023/09/18
2470
重构
图重构-重复关系重构
今天看到社区有人提问如何进行关系重构,顺手回答了一下。在此记录下关系重构的方法。
马超的博客
2022/07/04
8920
图重构-重复关系重构
重构
最近公司做了个项目,深深体会到架构设计以及代码优化有多么的重要。 回头看自己的代码都觉得特别混乱,有时候还要看很久才能看懂,可扩展性特别差,完全是为了完成需求而编码的。说得形象一点就像修水管,最后全部都漏水了。 个人觉得代码重构非常有必要,写程序不但要给机器运行,更让人看的明白。 写代码如写诗一样才行。(内容代码为主,建议实践一下比较好点)
用户3467126
2019/07/03
8830
qrCode生成二维码图片
QRCode.js 是一个用于生成二维码图片的插件。 1.文件脚本 var QRCode;!function(){function a(a){this.mode=c.MODE_8BIT_BYTE,th
用户1055830
2018/01/18
2.6K0
qrCode生成二维码图片
python之qrcode生成二维码
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100690.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/29
4770
python之qrcode生成二维码

相似问题

GetComponent用于计算损伤

10

建立距离和损伤公式

33

EEPROM损伤症状

25

边缘损伤小的滤波图像

26

基于matlab的损伤载荷计算

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档