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

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

12.04.2019, 12:15. Показов 5247. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru