Python을 통해 인코딩된 이미지 디코딩하기
14101 단어 Python
여기 있습니다.
revpage.py
import numpy as np
import cv2
import sys
argv = sys.argv
argc = len(argv)
if argc < 2:
print("利用方法:python revpage.py [basename] [number_of_page] [outputfile]")
quit()
page_num = int(argv[2])
page_list = []
for i in range(page_num):
page_list.append(cv2.imread("{0}{1}.png".format(argv[1], i), cv2.IMREAD_GRAYSCALE) > 0)
pix = (page_list[0].shape)[0]
page_max_bits = int((pix ** 2) / 2)
print("ページサイズ:{0}x{0}".format(pix))
print("復号ページ数:{}".format(page_num))
print("復号開始")
read_binary_str = ""
count = 0
for page in range(page_num):
page_point = page*page_max_bits
for py in range(int(pix / 2)):
for px in range(int(pix / 2)):
# print(binary_str[count*2:(count*2)+2])
if page_list[page][py*2][px*2+1] == True:
read_binary_str += '00'
elif page_list[page][py*2][px*2] == True:
read_binary_str += '01'
elif page_list[page][py*2+1][px*2+1] == True:
read_binary_str += '10'
elif page_list[page][py*2+1][px*2] == True:
read_binary_str += '11'
count += 1
if read_binary_str[-8:] == '11101100':
code_type = 0
elif read_binary_str[-8:] == '00010001':
code_type = 1
else:
code_type = -1
out_binary_str = read_binary_str
for i in range(int(len(read_binary_str)/8)):
if code_type == 0:
out_binary_str = out_binary_str[:-8]
if out_binary_str[-8:] == '00010001':
code_type = 1
else:
code_type = -1
elif code_type == 1:
out_binary_str = out_binary_str[:-8]
if out_binary_str[-8:] == '11101100':
code_type = 0
else:
code_type = -1
elif code_type == -1:
if out_binary_str[-8:] == '00000000':
out_binary_str = out_binary_str[:-8]
print("復号完了")
break
else:
print("Format error.")
quit()
with open(argv[3], 'w') as f:
f.writelines(out_binary_str)
이용법은python revpage.py [basename] [number_of_page] [outputfile]
.basename은 여러 장의 이미지를 뛰어넘는 상황에서 관찰 서열의 기초로 하는 공동 파일 이름입니다of_페이지는 복합 시퀀스 이미지의 장수입니다. 자동으로 검출되지만, 중요하지 않기 때문에 지령선에서 전달하기로 결정했습니다. outputfile는 복합 2진법을 텍스트로 변환하는 저장 대상 파일입니다.
대략적인 처리 내용
시험해 보다
이 보도에서 제작된 다음 이미지를 디코딩합니다.
이것은 stn_page[連番].png
라는 이미지입니다.python revpage.py stn_page 6 stn_page.bin
디코딩을 하고 표준 출력은 다음과 같다.
표준 출력ページサイズ:256x256
復号ページ数:6
復号開始
復号完了
그래서 바이너리 파일이 저장되었다.
이 파일의 이진 저장 데이터에서 이런로 만든 프로그램으로 원본 파일을 복원한다.
결과적으로 이 문서는 완전히 복원되었다.
이 보도
감상
즐거웠어
ページサイズ:256x256
復号ページ数:6
復号開始
復号完了
즐거웠어
Reference
이 문제에 관하여(Python을 통해 인코딩된 이미지 디코딩하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/strv13570/items/dc3e370b469d124bf4fb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)