-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathmain_quick.py
More file actions
58 lines (50 loc) · 1.78 KB
/
main_quick.py
File metadata and controls
58 lines (50 loc) · 1.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import ray
from PIL import Image
from utils import denoise_img, str_turn_num
folder = 'zfxfzb-code-data/img/'
class ProcePhoto(object):
def __init__(self, img_path):
self.img_name = img_path.split('/')[-1][:4]
img = Image.open(img_path).convert("L")
self.img = denoise_img(img)
def photo_to_text(self):
''' 图片转数据 '''
x_size, y_size = self.img.size
y_size -= 5
piece = (x_size - 22) // 8
centers = [4 + piece * (2 * i + 1) for i in range(4)]
photo_data = []
data_str = ''
for i, center in enumerate(centers):
single_img = self.img.crop((center - (piece + 2), 1, center + (piece + 2), y_size))
width, height = single_img.size
photo_data_x = []
for h_index in range(0, height):
for w_index in range(0, width):
pixel = single_img.getpixel((w_index, h_index))
data_str += '1 ' if pixel == 255 else '0 '
data_str = '%s%s\n' % (data_str, str_turn_num(self.img_name[i]))
return data_str
@ray.remote
def run(img_path):
im = ProcePhoto(img_path)
data = im.photo_to_text()
return data
if __name__ == "__main__":
ray.init()
dat = 'data.dat'
imgs_folder = folder+'zfxfzb_code/'
if not os.path.exists(imgs_folder):
print ("请运行样本生成程序\nUser: ./checkcode.exe")
else:
img_files = os.listdir(imgs_folder)
with open(dat, 'w') as data_file:
task = []
for img_name in img_files:
img_path = imgs_folder+img_name
task.append(run.remote(img_path))
data = ray.get(task)
data_file.write(''.join(data))