我正在开展一个项目,在那里我阅读了一个JSON文件,并检索了与我正在处理的图像相关的不同信息。
我坚持如何向我的json-read
函数传递多个变量,并使用它们移动到我的JSON文件中并检索我需要的值(代码仅在我传递3个变量时起作用) 。
这是代码的一部分:
class board(object):
def __init__(self, json, image):
self.json = json
self.image = image
def extract_json(one,two,three):
with open('document.json') as data_file:
data = json.load(data_file)
return data[one][two][three]
def crop_img(coords):
im = Image.open('./tabellone.jpg')
cropped_im = im.crop(coords)
return cropped_im
score_home_coords = extract_json("boxes", "score_home", "coord")
score_home_crop = crop_img(score_home_coords)
score_home_crop.save("./images/score_home_cropped.jpg")
path1 = "./images/score_home_cropped.jpg"
command = "ssocr-2.16.3/ssocr -d -1 -b black -l red %s" % path1
score_home = int(subprocess.Popen(command, shell=True, stdout=subprocess.PIPE).stdout.read())
MyAgonism = board('document.json', './tabellone.jpg')
print "Score Home: %s" % MyAgonism.score_home
我创建了一个MyAgonism类的实例,我将json文件名和我必须处理的图像文件名一起传递给它。
init 接收它们,但如何在2类方法中使用它们?我想做这样的事情:
def extract_json(one,two,three):
with open(SELF.JSON) as data_file:
data = json.load(data_file)
return data[one][two][three]
def crop_img(coords):
im = Image.open(SELF.IMAGE)
cropped_im = im.crop(coords)
return cropped_im
JSON文件示例:
{
"background": "black",
"foreground": "red",
"boxes": {
"time_minutes": {"foreground": "red", "type" : "7segments" , "coord": [267,132,315,182]},
"time_seconds": {"foreground": "red", "type" : "7segments" , "coord": [327,132,389,182]},
"score_home" : {"foreground": "red", "type": "7segments", "coord": [204,51,276,101]},
...
提前感谢您的帮助。
我需要这样的东西:
def extract_json(self, *args):
with open('document.json') as data_file:
data = json.load(data_file)
return data[args]
但所有的args都以这种方式显示:
(args1,args2,args3,args4)
而我需要
[args1] [args2] [args3] [args4]
使用正确的密钥正确访问我的json文件
修正了,该方法毫无用处。我刚刚用过:
with open(self.json_path) as f:
self.d = json.load(f)
答案 0 :(得分:0)
您刚忘记将self
作为第一个参数放在两个类方法中:
def extract_json(self, one, two, three):
with open(self.json) as data_file:
...
def crop_img(self, coords):
im = Image.open(self.image)
...
简化说明:
self
作为第一个参数。 这些被称为
实例方法。 cls
作为第一个参数。 这些被称为类方法。 self
,也不需要cls
。 这些是
称为静态方法。 更多解释here