当前位置:首页 » 编程软件 » 反编译qt图片

反编译qt图片

发布时间: 2022-07-31 11:47:54

㈠ file.read()读取的字节数据怎么反编译恢复成源文件中的数据、字母或文字。

由于课程原因,用到了其中的脱机手写汉字库(HWDB1.1trn_gnt与HWDB1.1tst _gnt)的数据。这些数据以.gnt格式存储,解码后可以得到3755个常用汉字的各300个样本。按照CASIA的建议,240个不同的书写者的样本作为training set,剩余60位书写者的样本作为testing set, 则共有897758个training sample, 223991个testing sample. 本文提供一段python脚本,可以直接将其中的数据存储成numpy数组文件(.npy文件)。只是,由于图像位置及大小对齐处理的原因,代码效率不是很高,执行起来需要的时间有点久:

Intel Core i7-4710MQ
16GB DDR3L RAM123

配置下,training set由.gnt文件转成.npy文件共花费 78 分钟。最终的结果文件有点大(training set 876MB, testing set 218M),可能存成.npy文件不如.h5文件更方便些。

另外,请大家在使用数据时遵守CASIA对于该数据库数据的使用要求。

gnt格式定义见下图:


如图所示,文件的前4个字节记录了第一个字符数据与下一个字符数据之间的字节数,比如这4个字节是35656的话,第二个字符的数据就是从第35657个字节开始(下标35656)。接下来的两个字节存储该字符的GBK编码,再下面的4个字节记录了字符图片的宽度和高度,然后就是字符图片的数据(按行存储)。

所需依赖:

  • opencv (>=2.0)

  • numpy

  • 具体代码如下:

  • # -*- coding: utf-8 -*-


  • from __future__ import print_function


  • import cv2

  • import numpy as np

  • import os

  • import struct

  • import sys

  • import zipfile


  • def gnt2npy(src_file, dst_file, image_size, map_file):

  • '''

  • 将gnt文件存为npy格式


  • param src_file: 源文件名,gnt文件

  • param dst_file: 目标文件名, 若此参数设置为'xxx',则会生成xxx_images.npy 和 xxx_labels.npy

  • param image_size: 图片大小,设置为m时,最终文件的大小将为 m x m

  • param map_file: 由于汉字编码不连续,作为分类label并不合适,该文件保存汉字码和label的映射关系

  • '''


  • code_map = {}

  • if os.path.exists(map_file):

  • with open(map_file, 'r') as fp:

  • for line in fp.readlines():

  • if len(line) == 0:

  • continue;

  • code, label = line.split()

  • code_map[int(code)] = int(label)

  • fp.close()

  • images = []

  • labels = []


  • if zipfile.is_zipfile(src_file): #单体zip文件

  • zip_file = zipfile.ZipFile(src_file, 'r')

  • file_list = zip_file.namelist()

  • for file_name in file_list:

  • print("processing %s ..." % file_name)

  • data_file = zip_file.open(file_name)

  • total_bytes = zip_file.getinfo(file_name).file_size

  • image_list, label_list, code_map = readFromGnt(data_file, file_name, image_size, total_bytes, code_map)

  • images += image_list

  • labels += label_list

  • elif os.path.isdir(src_file): #包含gnt文件的文件夹

  • file_list = os.listdir(src_file)

  • for file_name in file_list:

  • file_name = src_file + os.sep + file_name

  • print("processing %s ..." % file_name)

  • data_file = open(file_name, 'rb')

  • total_bytes = os.path.getsize(file_name)

  • image_list, label_list, code_map = readFromGnt(data_file, image_size, total_bytes, code_map)

  • images += image_list

  • labels += label_list

  • else:

  • sys.stderr.write('Source file should be a ziped file containing the gnt files. Plese check your input again. ')

  • return None


  • with open(map_file, 'w') as fp:

  • for code in code_map:

  • print(code, code_map[code], file=fp)

  • fp.close()

  • np.save(dst_file + '_images.npy', images)

  • np.save(dst_file + '_labels.npy', labels)



  • def readFromGnt(data_file, image_size, total_bytes, code_map):

  • '''

  • 从文件对象中读取数据并返回


  • param data_file, 文件对象

  • param image_size: 图片大小,设置为m时,最终文件的大小将为m x m

  • param total_bytes: 文件总byte数

  • param code_map: 由于汉字编码不连续,作为分类label并不合适,该dict保存汉字码和label的映射关系

  • '''

  • decoded_bytes = 0

  • image_list = []

  • label_list = []

  • new_label = len(code_map)

  • while decoded_bytes != total_bytes:

  • data_length, = struct.unpack('<I', data_file.read(4))

  • tag_code, = struct.unpack('>H', data_file.read(2))

  • image_width, = struct.unpack('<H', data_file.read(2))

  • image_height, = struct.unpack('<H', data_file.read(2))

  • arc_length = image_width

  • if image_width < image_height:

  • arc_length = image_height

  • temp_image = 255 * np.ones((arc_length, arc_length ,1), np.uint8)

  • row_begin = (arc_length - image_height) // 2

  • col_begin = (arc_length - image_width) // 2

  • for row in range(row_begin, image_height + row_begin):

  • for col in range(col_begin, image_width + col_begin):

  • temp_image[row, col], = struct.unpack('B', data_file.read(1))

  • decoded_bytes += data_length

  • result_image = cv2.resize(temp_image, (image_size, image_size))

  • if tag_code not in code_map:

  • code_map[tag_code] = new_label

  • new_label += 1

  • image_list.append(result_image)

  • label_list.append(code_map[tag_code])


  • return image_list, label_list, code_map



  • if __name__=='__main__':


  • if len(sys.argv) < 5:

  • sys.stderr.write('Please specify source file, target file, image size and map file ')

  • sys.exit()


  • src_file = sys.argv[1]

  • dst_file = sys.argv[2]

  • image_size = int(sys.argv[3])

  • map_file = sys.argv[4]

  • gnt2npy(src_file, dst_file, image_size, map_file)

  • 10710810911011111114115

  • 命令格式举例:python gnt2npy.py src target img_size map_file,以上参数中,gnt2npy为脚本文件名,可任意更改。src为源文件名,可以是只包含.gnt文件的zip包,也可以是将压缩文件解压后的文件夹名称,target为目标文件名,假设该值为train则脚本执行后会生成train_images.npy与trian_labels.npy两个文件,分别为图像数据和对应的label。图像的大小则可以通过第三个参数img_size指定,假设该值为32则图像文件大小为32 x 32。另外,由于汉字的GBK编码并不是从零开始,也不完全连续,作为分类的label不是很合适,因此在保存label时根据一定的规则将GBK编码映射为数据的label,最后一个参数map_file则保存这种映射关系,第一次执行脚本时生成该文件,以后则可以通过该文件保证相同汉字,其label总是相同的。

    请注意,HWDB1.1trn_gnt.zip包含的其实是一个ALZ压缩文件,因此请不要将该文件名直接作为参数传入以上代码,请将里面的ALZ文件解压后将文件夹的名字作为参数。

    此外,这个Github链接提供了预览及保存图片文件的工具,同样可以用于该文件类型(.gnt)的数据提取,并且可以通过选择使用的框架(Caffe/CNTK/TensorFlow/NvidiaDigits)将图片文件按照不同的大小、格式保存。其中,win64_bianry.zip包含编译好的X64二进制文件和一份简单的使用说明,其他为源码及源码生成GUI需要用到的图片和一个qt项目文件gntDecoder.pro,有兴趣的话也欢迎大家下载源码随意修改。预编译的X64程序运行时可能要求”api-ms-win-crt-runtime-l1-1-0.dll”,出现该信息的话请通过微软官网或者机器中的Windows Update安装KB2999226补丁(通用C运行库)。

㈡ 请高手回答:qt编程 如何提取jpg图片格式的缩略图并显示

用 QPixmap 加载 jpg 后
调用缩放函数,缩放成合适的大小.
贴在 QLable 上或者 QWidget 上就可以显示了.

㈢ QT的程序能反编译吗

Qt除了用moc扩展了C++以外其他都和C++没区别,编译出来的机器代码只能转成汇编语言

㈣ 如何用QT将图片全屏显示

插入-图片-来自文件,选择你的图片文件,确定后在word中插入了图片。
然后设置图片格式,在版式选项卡设置为衬于文字下方,在大小选项卡调整图片大小,使高度和宽度与页面相当(如果担心图片长宽失真,则勾选锁定纵横比,然后对超大的图片在图片选项卡中对上下左右进行适当裁剪)。
确定后,用鼠标拖动图片到页面适当位置(覆盖全页面)。好像就行了。

㈤ qt显示图片 warning: C4129: “ : 不可识别的字符转义序列

文件路径的\反斜杠,是字符串转移字符,要在字符串常量中使用反斜杠,需要两个连着。即:
"D:\\xxx\\1.jpg"

㈥ QT这种图片怎么出来

就是提这种图片怎么出来用打印机就可以打印出来

㈦ Qt creator交叉编译带图片的程序出现问题,版本4.7

找不到 libQtGui.so 这个库, 添加环境变量 LIBRARY_PATH=/opt/Qt4.7/lib 试试
另外你使是用 arm-linux-gcc 编译程序, 需要保证 QT 下的 libQtGui.so 库也是用 arm-linux-gcc 编译的, 否则编译链接会出问题

㈧ 关于qt的图片显示的问题,急程序通过编译,但图片不能顺利打开。

在QuickTime没有卸载的时候会把系统里图片显示的部分参数给改掉,所以装完以后卸载了QuickTime就会变得不能显示了,而png格式的图片在IE核心浏览器的网页上会变得不能显示(不是IE核心的浏览器,比如火狐就可以看到)。我当时就把QuickTime重装了一遍,然后把里面的设置改掉,在里面的支持的图片里把png后缀后面的那个勾去掉,然后再卸载掉(可能不用卸载也说不定),png图片就会显示了。不过每个人情况都有可能不一样,方法也许是因人而异的。

㈨ 用Qt框架写的软件怎么反编译

修改替换"framework-res.apk"后导致无法进入系统,或者无限开机重启的,基本都是在编译跟反编译上出了问题!! 首先要完成构建java环境 要想美化,必须先认真看懂下面的每一步, ①framework-res.apk是不可以重签名的

㈩ 怎么用QT反编译exe文件

可以使用打包工具 Enigma Virtual Box 把需要的dll与exe打包生成一个exe 可以使用静态编译(QT的这个比较麻烦,我没用过) 不要使用QT平台,直接使用VS平台开发

热点内容
服务器不识别配置的ip地址 发布:2025-02-08 22:00:02 浏览:615
橙云服务器 发布:2025-02-08 21:59:48 浏览:438
ftp服务器ip就是电脑ip吗 发布:2025-02-08 21:51:42 浏览:475
数据库5 发布:2025-02-08 21:43:17 浏览:51
安卓安装证书没有怎么办 发布:2025-02-08 21:32:10 浏览:358
外交官拉杆箱怎么设密码 发布:2025-02-08 21:21:55 浏览:797
vivo手机z系列哪个配置性价比最高 发布:2025-02-08 21:17:43 浏览:10
什么是白标和服务器 发布:2025-02-08 21:15:50 浏览:481
租完服务器怎么搭建ip 发布:2025-02-08 21:11:47 浏览:394
c语言赋值后 发布:2025-02-08 21:08:40 浏览:757