Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 受损QR码重构_Image Processing_Qr Code_Aforge - Fatal编程技术网

Image processing 受损QR码重构

Image processing 受损QR码重构,image-processing,qr-code,aforge,Image Processing,Qr Code,Aforge,编辑 下图是原始图像上的预处理序列。 1.原始图像->2。模糊x n次以使qrcode位置有效->3。裁剪原始图像,使用blob->4从第二步提取位置。锐化和阈值->5。检查三个方块的qrcode->6。要执行其他变换,如旋转->(最终图像)(具有调整大小分辨率的裁剪图像) 老问题 我试图从原始图像重建QR码。正如你所看到的,这张照片已经损坏了QR码,所以我使用了一个RGE库,使用blob从图像中检测出3个正方形。现在我不明白的是从这些信息生成qrcode的逻辑。在技术上是否可以用给定的信息重建

编辑 下图是原始图像上的预处理序列。 1.原始图像->2。模糊x n次以使qrcode位置有效->3。裁剪原始图像,使用blob->4从第二步提取位置。锐化和阈值->5。检查三个方块的qrcode->6。要执行其他变换,如旋转->(最终图像)(具有调整大小分辨率的裁剪图像)

老问题 我试图从原始图像重建QR码。正如你所看到的,这张照片已经损坏了QR码,所以我使用了一个RGE库,使用blob从图像中检测出3个正方形。现在我不明白的是从这些信息生成qrcode的逻辑。在技术上是否可以用给定的信息重建QR码


这将很困难

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


如果你的目标实际上是能够解码,那么你就被卡住了。“手工”解码可能是可行的,但它既冗长又复杂。您还可以考虑在完美的网格上手工绘制代码,并将其传递给读取器。

< P>这将是困难的。

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


如果你的目标实际上是能够解码,那么你就被卡住了。“手工”解码可能是可行的,但它既冗长又复杂。你也可以考虑在一个完美的网格上手工绘制代码,并将其传递给读者。

< P>这是一个有趣的问题。回答你的问题,这在技术上是否可行。是的,这当然是可能的。问题中的二维码编码为“5176941.12”

这是预渲染的图像,以便更容易手动设置像素

在这一步之后,我使用excel逐个设置每个像素。之后,只需将手机指向电脑屏幕即可。这就是它看起来的样子。如果您想要excel工作表,可以在此处()获取

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


编辑 下面是一些python代码,可以作为如何实现自动化的指南。需要注意的几点:

  • 我绕过了检测3个盒子的步骤,手动将其裁剪得非常紧密。如果在捕获过程中出现旋转,则需要对其进行修复
  • 阈值0.6需要针对不同的图像进行调整。现在,即使存在多个错误,它仍然“幸运地”起作用。如果错误太大,您可能永远不会拥有有效的二维码
代码:

导入cv2
将numpy作为np导入
def加注箱(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]
返回qr
im=cv2.imread('to_process.png'))
im=cv2.CVT颜色(im,cv2.COLOR\u BGR2GRAY)
im=cv2。调整大小(im,(210210))
im=1-((im-im.min())/(im.max()-im.min())#标准化并调整对比度
平均值=np.平均值(im)
qr=np.one((21,21))
w、 h=im.形状[:2]
im_orig=im.copy()
我

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

阈值图像

请注意,即使存在多个错误,它仍然可以工作


这是一个有趣的问题。要回答您的问题,这在技术上是否可行。是的,这当然是可能的。您问题中的二维码编码为“5176941.12”

这是预渲染的图像,以便更容易手动设置像素

在这一步之后,我使用excel逐个设置每个像素。之后,只需将手机指向计算机屏幕。这就是它的外观。如果您想要excel工作表,可以在此处获取()

既然可能性的问题已经解决了,那么如何实现自动化呢?在不知道更多样本的情况下,很难确定。然而,仅基于此样本,最简单的方法就是在裁剪的QR图像上对齐21x21网格,并使用阈值填充值。然后将此图像传递给您的QR解码器。QR码具有一定程度的冗余,因此即使某些像素丢失,您也很可能能够恢复原始数据


编辑 以下是一些python代码,可以作为如何实现自动化的指南。需要注意的几点:

  • 我绕过了检测3个盒子的步骤,手动将其裁剪得非常紧密。如果在捕捉过程中出现旋转,你需要修复它
  • 阈值0.6需要针对不同的图像进行调整。目前,即使存在多个错误,它仍然“幸运地”起作用。如果错误太大,您可能永远不会拥有有效的二维码
代码:

导入cv2
将numpy作为np导入
def加注箱(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]
返回qr
im=cv2.imread('to_process.png'))
im=cv2.CVT颜色(im,cv2.COLOR\u BGR2GRAY)
im=cv2。调整大小(im,(210210))
im=1-((im-im.min())/(im.max()-im.min())#标准化