Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/25: Рейтинг темы: голосов - 25, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 30.11.2016
Сообщений: 5

Запись данных в json файл

12.04.2019, 12:15. Показов 5214. Ответов 7

Студворк — интернет-сервис помощи студентам
Суть в том,что нужно создать json файл, в который нужно постоянно записывать данные об изображении,которое берется из папки : Координаты и количество лиц. Не могу понять, как постоянно добавлять в этот файл данные. Буду рад любым советам.
Python
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
59
60
61
62
63
64
import numpy as np
import cv2 as cv
import argparse
import glob
import os
import time
import json
 
face_cascade = cv.CascadeClassifier('haarcascade_frontalface_default.xml')
 
ap = argparse.ArgumentParser()
 
ap.add_argument("-f", "--folder", required = True, 
    help = "path to folder with images")
args = ap.parse_args()
 
num = len([1 for x in list(os.scandir(args.folder)) if x.is_file()])
 
if not os.path.isdir('images/'):
    os.makedirs('images/')
 
d = {}
 
 
def load_images_from_folder(path):
    for (i,filename) in enumerate(os.listdir(path)):
        if filename.split('.')[-1].lower() in {'jpeg', 'jpg', 'png'}:
            face_detection(path + filename, i)
 
def face_detection(image, key):
    
    img = cv.imread(image)
    gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
 
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
    if len(faces) == 0:
        print ("No faces found")
    else:
        # print (faces)
        print ("Number of faces detected: " + str(faces.shape[0]))
        for (x,y,w,h) in faces:
                #cv.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
                #print((x,y),(x+w,y+h))
                
                blurred = cv.GaussianBlur(img,(25,25),0)
                img[y:y+h,x:x+w] = blurred[y:y+h,x:x+w]
 
                #cv.rectangle(img, ((0,img.shape[0] -25)),(270, img.shape[0]), (255,255,255), -1)
                cv.resize(img,(0,0), fx = 0.5, fy = 0.5)
 
 
                #cv.putText(img, "Number of faces detected: " + str(faces.shape[0]), (0,img.shape[0] -10), cv.FONT_HERSHEY_TRIPLEX, 0.5,  (0,0,0), 1)
 
    cv.imwrite(os.path.join('images/', "image-" + str(key) + ".jpg"), img)
 
    d = { "image-" + str(key): {"Number of faces detected: " : faces.shape[0], "Coordinats:" : (x,y,x+w,y+h) }}
 
    with open('result.json', 'w') as f:
        for k,val in d.items():
            f.write(json.dumps(d))
 
if __name__ == "__main__":
 
    load_images_from_folder(args.folder)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.04.2019, 12:15
Ответы с готовыми решениями:

Запись в файл JSON
Напишите программу, которая запишет полученные данные в файл research.json в виде словаря, в котором по ключу “geographical” находятся...

Запись данных в файл json
Я делаю бота Discord на JS и столкнулся с такой проблемой. У меня есть код: let profile = require('./UsersData.json') let uid =...

Запись данных в json файл из тегов input
Всем добрый вечер. Есть идеи как записывать данные из инпутов в json-файл?

7
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
12.04.2019, 12:21
Открыть файл на запись один раз. Добавлять в него данные во время работы. Закрыть файл.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from random import randint
 
def write(file, value):
    file.write(value + '\n')
 
def rand():
    return str(randint(-10, 10))
 
if __name__ == '__main__':
    f = open('text.txt', 'w')
    a = rand()
    write(f, a)
    b = rand()
    write(f, b)
    f.close()
1
0 / 0 / 0
Регистрация: 30.11.2016
Сообщений: 5
12.04.2019, 12:34  [ТС]
Спасибо за ответ. Подскажите, а если мне нужно добавлять постоянно набор зависящих параметров.
Python
1
2
3
   d = { "Image": 'image' + str(key) + '.jpg',
          "Number of faces detected: " : faces.shape[0],
          "Coordinats:" : (x,y,x+w,y+h)}
Как это сделать? Спасибо
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
12.04.2019, 12:42
Не совсем понимаю о чем идет речь.
А нельзя сначала выполнить всю обработку информации, а затем записать результат в файл?
0
0 / 0 / 0
Регистрация: 30.11.2016
Сообщений: 5
12.04.2019, 12:45  [ТС]
И как это сделать?
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
12.04.2019, 12:50
В смысле как? Я не знаю, что делает ваш код.
Вы хотите в один файл записывать json, который обновляется после обработки каждой папки?
Сначала вы обрабатываете все папки, формируете json и т.п. Даже пусть у вас будет много json объектов, их все можно хранить в каком-нибудь словаре. А уже когда все сделали, json сформировали, производите операцию записи в файл.
1
0 / 0 / 0
Регистрация: 30.11.2016
Сообщений: 5
12.04.2019, 14:52  [ТС]
Здесь добавляет только последний файл из папки. Как сделать,чтобы добавлялись все файлы? Спасибо
Python
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
def face_detection(image, key):
    coor = []
    k = 1
    img = cv.imread(image)
    gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
 
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
    if len(faces) == 0:
        faces = 0
        # print (faces)
        cv.imwrite(os.path.join('images/', "image-" + str(key) + ".jpg"), img)
        json_dict = create_dict(None, faces, key)
        with open('result.json', 'w') as f:
            f.write(json.dumps(json_dict))
    else:
        # print (faces)
        print ("Number of faces detected: " + str(faces.shape[0]))
        for (x,y,w,h) in faces:
                #cv.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
                #print((x,y),(x+w,y+h))
                
                blurred = cv.GaussianBlur(img,(25,25),0)
                img[y:y+h,x:x+w] = blurred[y:y+h,x:x+w]
 
                #cv.rectangle(img, ((0,img.shape[0] -25)),(270, img.shape[0]), (255,255,255), -1)
                cv.resize(img,(0,0), fx = 0.5, fy = 0.5)
                if  k == faces.shape[0]:
                    coor.append([x,y,x+w,y+h])
                    cv.imwrite(os.path.join('images/', "image-" + str(key) + ".jpg"), img)
 
                    json_dict = create_dict(str(coor), faces.shape[0], key)
                    # annotation.append(json_dict)
                    with open('result.json', 'w') as f:
                        f.write(json.dumps(json_dict))
 
                else:
                    k+=1
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
12.04.2019, 15:10
Лучший ответ Сообщение было отмечено mivan1998 как решение

Решение

Вы функцию face_detection вызываете в цикле? Если да, то вы каждый раз перезаписываете файл, поэтому и добавляется только последний результат.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.04.2019, 15:10
Помогаю со студенческими работами здесь

Запись json в файл
Привет всем! Мне нужно записать json-документ в файл с помощью библиотеки rapidjson. Я переписал пример кода записи строки в файл с...

Запись в json файл
Есть функция которая принимает аргумент, который записывается в переменную data, как правильно закрыть файл в блоке data =...

Запись в файл, сжатие JSON
Здравствуйте! Подскажите, как реализовать подобную вещь: есть текст, его нужно сжать с помощью JSON и записать в файл, потом на вторую...

Не идёт запись в файл .json
Доброго времени суток, форумчане. Не могу понять почему запись в файл не работает. Есть файл ресурсов, путь к которому записан ниже....

запись данных в json
Есть форма. С нее получаем данные POST'ом. Эти данные записываем в json файл. Проблема: кириллица ни в какую не хочет записываться. Дамп...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru