早点睡吧451 2023-06-14 17:52 采纳率: 25%
浏览 9

python qlabel 根据灰度图生成像素点文本

    def action203_function(self):
        pixmap = self.label.pixmap()
        image = pixmap.toImage()

        codeLib = '''@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,"^`'. '''
        count = len(codeLib)

        codePic = ""
        for h in range(0, pixmap.height()):
            for w in range(0, pixmap.width()):
                color = image.pixelColor(w, h)
                r, g, b, a = color.getRgb()  # a为透明度
                # gray = int(r*0.2989 + g*0.5870 + b*0.1140)
                gray = int(0.2126*r + 0.7152*g + 0.0722*b)
    unit = 256 / count
                codePic += codeLib[int(gray//unit)]
            codePic = codePic + "\r\n"

        self.label.setText(codePic)

img

img

img

代码不全。我只把我想问的部分放上来了。
这个代码的功能是根据qlabel上的图片的灰度图,按灰度图上各像素点数值,从字符集中选择字符,生成图片文本中对应像素点文本;
可问题是生成的像素点文本与原图一点也不像。我看别人写的就能看出原图。为什么我的不行?应该怎么优化?
第一张是原图,第二张是灰度图,第三张是像素文本。
以下两张图片是别人做出来的效果,也是我想要的效果。

img

img

  • 写回答

2条回答 默认 最新

  • 关注

    可能是字符集中的字符数量不够多,或者字符的选择不够准确。可以尝试增加字符集中的字符数量,尝试选择更准确的字符来表示图像的不同灰度值。或者调整算法中的参数,例如颜色范围和字符数。

    评论

报告相同问题?

问题事件

  • 创建了问题 6月14日

悬赏问题

  • ¥20 python忆阻器数字识别
  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真