知乎发二维码如何不被吞
本站作者
2023-11-26 05:10:00
我想知乎为了防止误伤,对于二维码的识别力度应该是有限的,所以最基本的想法就是对二维码进行几何变换、图像修饰。这里用Mathematica与Blender做演示。
从最基本的开始:
假设我用我的B站主页做二维码,那么首先在Mathematica中用BarcodeImage函数生成图像:
img = BarcodeImage["#/", "QR", 512]
得到图像之后,进行几何变换:
旋转
ImagePerspectiveTransformation[img, RotationTransform[10 [Degree]], Background -> White, Masking -> All, PlotRange -> All]
随机仿射变换(拉伸+旋转)
ImagePerspectiveTransformation[img, DiagonalMatrix[{1, 1}] + RandomReal[{-0.4, 0.4}, {2, 2}], Background -> White, Masking -> All, PlotRange -> All]
随机分式线性变换(透视变换)
ImagePerspectiveTransformation[img, DiagonalMatrix[{1, 1, 1}] + RandomReal[{-0.4, 0.4}, {3, 3}], Background -> White, Masking -> All, PlotRange -> All]
先试试这几个看看能不能用
下面使用一个更彻底的处理方法:艺术化。也就是说,将二维码处理为一个三维渲染图像,使得它看起来像是迷宫一样,这样从原则上是无法被识别出来的(因为如果知乎要识别出它,势必会误伤很多其他的图片)。
首先,将其中的像素转为立方体:
img = BarcodeImage["#/", "QR", 1]imgData = ImageData[img];cubes = Table[ If[imgData[[i, j]] =, Cuboid[{i, j, 0}, {i, j, 0} + {1, 1, 1}]], {i, 1, Length[imgData]}, {j, 1, Length[imgData[[1]]]}];model = Graphics3D[cubes]
之后,将model导出为stl文件:
Export[NotebookDirectory <> "model.stl", model]
之后,在Blender中导入此model文件:
之后,进行简单的边线清理,设定好材质,进行渲染:
这个的效果非常好,因为我自己拿着微信扫了半天才识别出来。。。。
如果想要咨询 / 定制教程(收费),可以加入知识星球Mathematica·Lab,会长期分享Mathematica的技巧。对于会员的提问,会定期制作针对性的视频教程(点开后扫描):
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权本站发表,未经许可,不得转载。
上一篇 :
下雨好久的说说(适合下雨天发表的心情说说)
下一篇 :
闺蜜聚会说说 和闺蜜聚会发的说说汇集200句