Russian Qt Forum
Ноябрь 25, 2024, 06:52
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
Как быстро сохранить изображение большого размера?
Страниц:
1
[
2
]
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Как быстро сохранить изображение большого размера? (Прочитано 19421 раз)
spirit
Гость
Re: Как быстро сохранить изображение большого размера?
«
Ответ #15 :
Апрель 21, 2009, 11:27 »
Цитата: SABROG от Апрель 21, 2009, 11:15
А что qCompress будет все-равно медленным, если степень сжатия поставить 1?
а толку от него, если png уже пожат?
Записан
SABROG
Гость
Re: Как быстро сохранить изображение большого размера?
«
Ответ #16 :
Апрель 21, 2009, 11:36 »
Я говорю о варианте без сжатия картинки. Посылать через сокет команды вместо картинок. Если рисуют одновременно несколько человек, то задача сервера тупо переслать эти команды всем клиентам, а их клиентские приложения сами будут все рисовать.
Записан
spirit
Гость
Re: Как быстро сохранить изображение большого размера?
«
Ответ #17 :
Апрель 21, 2009, 11:37 »
Цитата: SABROG от Апрель 21, 2009, 11:36
Я говорю о варианте без сжатия картинки. Посылать через сокет команды вместо картинок. Если рисуют одновременно несколько человек, то задача сервера тупо переслать эти команды всем клиентам, а их клиентские приложения сами будут все рисовать.
ааа, ну тогда есть смысл конечно. не понял сначала.
Записан
SABROG
Гость
Re: Как быстро сохранить изображение большого размера?
«
Ответ #18 :
Апрель 21, 2009, 11:56 »
А вообще 60 картинок (fps) размером 2500x2000 это даже самый оптимизированный видео-кодек быстро не сожмет. Конечно на скорость будет влиять количество разнообразия пикселей. Если создать белую картинку с одним черным пикселем в центре, то операция будет достаточно быстрой. Но когда 10 человек начнут рисовать что-то свое на таком здоровом поле, то скорость упадет очень быстро.
Записан
¤Se®ega¤
Гость
Re: Как быстро сохранить изображение большого размера?
«
Ответ #19 :
Апрель 21, 2009, 15:07 »
Формат изображения не обязательно PNG. Размер сегодня уменьшили до 1600*1200.И как вы считаете, если применять методы bits,scanLineбьуьсзн, возможно повысить производительнность?Сейчас важно сгенерированную картинку запихнуть в сокет с частотой 50 fps.'nj сейчас самое слабое место.При сохранении картинки в формате PNG с разрешением 2560*2048 частота была порядка 1 fps, картинку в формате BMP "передавал" в 4-5 раз быстрее.Возможно изменение размера повлияет на частоту, но думаю не в десятки раз.
Записан
SABROG
Гость
Re: Как быстро сохранить изображение большого размера?
«
Ответ #20 :
Апрель 21, 2009, 16:29 »
Я так и не понял предназначения подобной программы. 50 fps человеческий глаз не воспринимает. Оптимально 25-30. А если надо просто видеть как человек линию ведет, то там все 5 fps подойдут, просто видео будет рывками. А к чему такая точность?
Записан
Sergeich
Гость
Re: Как быстро сохранить изображение большого размера?
«
Ответ #21 :
Апрель 21, 2009, 18:51 »
Камрад Серега!
Давай определимся, и не будем множить темы на форуме об одном и том же - у тебя уже штук восемь постов по одной конкретной задаче . Давай, если ты не против, сделаем так:
Ты излагаешь здесь свою задачу: а именно - для чего нужна программа, зачем архитектура клиент-сервер, зачем OpenGL, зачем передавать по сети 4-х мегапиксельные картинки с FPS = 50?
Если ты это сделаешь - сразу снимется хренова туча вопросов (libastral, к сожалению, собирается не у всех). И, я уверен, на все твои проблемы найдется хоть один, но дельный совет.
Лично я могу дать совет по использованию OpenGL, передачи данных по сети, и кодированию/декодированию видеопотока, но только в том случае, если задача поставлена нормально.
Записан
SABROG
Гость
Re: Как быстро сохранить изображение большого размера?
«
Ответ #22 :
Апрель 21, 2009, 22:29 »
Не знаю как вам, а мне подобная задача напоминает попытку сделать полноэкранную 3d игру типа Call of Duty, только вся работа с граффикой идет не на видео-карте клиента, а на сервере. Что-то типа thin client для игр.
Записан
¤Se®ega¤
Гость
Re: Как быстро сохранить изображение большого размера?
«
Ответ #23 :
Апрель 21, 2009, 22:54 »
Прохожу практику на фирме, занимающейся видеонаблюдением.Руководитель, человек неглупый, дал задание: Создать программу, которая сможет отображать КАРТИНКИ размером (уже 1600*1200) с частотой 50 fps ну и в дальнейшем еще и на несольких мониторах разные картинки.Чтобы видеть, что мы картинки в дейцствивельности получаем надо сделать анимацию, например средствами OPenGL, так как это быстро, чтобы получать картинки и не загружать программу их генерацией,можно организовать клиента и сервера, сервер генерит, клиент получает и отображает.Картинка уже известным рамером отображаем с известной частотой.Теперь что касается необходимости этого "проекта".Возможно в дальнейшем сервр с генерацией будет заменен на поток данных с камер,которые бдут передавать изображения с подобным разрешнием и подобной частотой.
Записан
spirit
Гость
Re: Как быстро сохранить изображение большого размера?
«
Ответ #24 :
Апрель 22, 2009, 08:17 »
значит все-таки видео поток.
Записан
SABROG
Гость
Re: Как быстро сохранить изображение большого размера?
«
Ответ #25 :
Апрель 22, 2009, 10:52 »
Камеры уже в каком-то формате передают видео-поток. По сути ты пытаешься на Qt написать свой алгоритм сжатия этого видео-потока, вместо того, чтобы заняться поиском кроссплатформенного декодера для потока с камеры и проверить насколько хватает пропускной способности сети и мощности компьютера, чтобы передать какой-нибудь сгенеренный фильм в Sony Vegas с подобной частотой и разрешением.
Записан
¤Se®ega¤
Гость
Re: Как быстро сохранить изображение большого размера?
«
Ответ #26 :
Апрель 22, 2009, 12:30 »
Какого сжатия? вы о чем? мне надо картинку нарисовать, записать во что-то, это что-то передать, и потом отобразить, все.
Записан
SABROG
Гость
Re: Как быстро сохранить изображение большого размера?
«
Ответ #27 :
Апрель 22, 2009, 15:51 »
Цитата: ¤Se®ega¤ от Апрель 22, 2009, 12:30
Какого сжатия? вы о чем? мне надо картинку нарисовать, записать во что-то, это что-то передать, и потом отобразить, все.
Ага картинку... Если быть точнее, то 50 картинок в секунду с разрешением 1600*1200 по сети и видимо, чтобы не лагало и без задержек. А это уже ну никак не картинка, а видео-поток.
У тебя узкое место - нехватка ресурсов компьютера и отсутствие оптимального алгоритма потокового видео. В видео-камерах кодированием потока занимается железка, а не программа, засчет этого поток камера сжимает гораздо быстрее компьютера.
Если действительно ограничиваться рамками нарисовать картинку и передать, то какой смысл вообще за это браться, если это изначально неверный подход, который в итоге приведет к тому о чем тебе уже сказали. Лишняя трата времени. Надо подстраиваться под реальную ситуацию, а не под абстрактную. Или создать искусственные условия.
Поставь в сети VLC сервер настрой мультикастинг, сгенери в Sony Vegas или virtualdub видео поток с фрейм-рейтом 50 фпс и разрешением 1600*1200, затем настрой бесконечную прокрутку этого потока в VLC и поставь кодек, аналогичный тому, что стоит в системе видео-наблюдения. Изучи протокол, по которому идет передача видео-потока и начинай дешифровывать его с помощью средств Qt.
Только, если бы я взялся за это, то изначально потребовал бы за программу энную сумму.
Записан
¤Se®ega¤
Гость
Re: Как быстро сохранить изображение большого размера?
«
Ответ #28 :
Апрель 22, 2009, 19:50 »
Куда-то все не туда. касеры, видео, суммы.
Записан
kamre
Частый гость
Offline
Сообщений: 233
Re: Как быстро сохранить изображение большого размера?
«
Ответ #29 :
Апрель 22, 2009, 20:53 »
Цитата: ¤Se®ega¤ от Апрель 21, 2009, 22:54
сможет отображать КАРТИНКИ размером (уже 1600*1200) с частотой 50 fps ну и в дальнейшем еще и на несольких мониторах разные картинки.
Нормальный такой поток данных: 1600*1200*3*50 / 2^20 ~ 275 MBytes/sec. Внутри компа такой поток можно гонять довольно просто между CPU/GPU/RAM. Но уже не всякий жесткий диск осилит чтение данных с такой скоростью. По сетке такое гонять далеко не по всякой получится.
Так что надо определиться с задачей. Для видеонаблюдения такой поток какой-то не реальный просто. Но, скажем, создавать картинки с указанной скоростью в одном процессе и отображать в другом процессе на одном и том же компе вполне реально - пример X Window system.
Записан
Страниц:
1
[
2
]
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...