當前位置:首頁 » 編程軟體 » 反編譯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平台開發

熱點內容
網吧怎麼通過伺服器玩網路游戲 發布:2025-02-08 19:59:52 瀏覽:914
文檔編輯加密 發布:2025-02-08 19:56:31 瀏覽:392
phpmysql存儲過程實例 發布:2025-02-08 19:54:40 瀏覽:161
淘寶賣的地下城腳本 發布:2025-02-08 19:41:40 瀏覽:61
安卓怎麼把提升畫質關了 發布:2025-02-08 19:40:11 瀏覽:361
我想你加密 發布:2025-02-08 19:39:24 瀏覽:216
java手機號正則表達式 發布:2025-02-08 19:34:50 瀏覽:353
ue加密 發布:2025-02-08 19:34:05 瀏覽:476
滁州壓縮機 發布:2025-02-08 19:34:03 瀏覽:882
壓縮棉花絮片 發布:2025-02-08 19:33:12 瀏覽:395