В настоящее время работаю программистом-технологом: занимаюсь реализацией интерфейса прикладного ПО под Debian x64.
Контакты
Местоположение
Россия, Москва и Московская обл., Истра

Наибольший вклад в теги

Все теги (7)

Лучшие ответы пользователя

Все ответы (9)
  • Каким инструментом лучше организовать работу с IP-камерами на Qt?

    alxndrlsn
    @alxndrlsn Автор вопроса
    Инженер
    Все встало на свои места неожиданно: слегка разочаровавшись в QCamera, а также обнаружив, что ffserver больше не поддерживается с июля 2016 года,..

    July 10th, 2016, ffserver program being dropped(с)ffmpeg.орг/индекс.html#ffserver

    ..смотрел похожие классы и через QVideoWidget вышел на QMediaPlayer, который, начиная с версии Qt 5.12.2, позволяет использовать gst-pipeline при установленном GStreamer. Иными словами, в методе QMediaPlayer::setMedia(QMediaContent) можно вставить строку QUrl, содержащую обычную команду для gstreamer:
    что-то вроде этого (просто для примера):
    player->setMedia(QUrl(gst-pipeline: rtspsrc location=rtsp://user:passwrd@StaticCameraIP:port/path ! rtph264depay !  h264parse ! omxh264dec ! nvvidconv ! video/x-raw, width=1920, height=1080, format=BGRx ! videoconvert !  ximagesink sync=false));

    Работает хорошо, однако проверял в условиях цейтнота, поэтому столкнувшись с некоторым непонятным моментом, не нашел пока: как бороться с тем, что поток открывается в совершенно новом окне, игнорируя вызванный ранее QMediaPlayer::setVideoOutput(QVideoWidget). Возможно это потому, что у меня экземпляр QMediaPlayer не является дочерним по отношению к QVideoWidget. Но главное - работает!
    Ответ написан
    Комментировать
  • Откуда взять vswhere для boost?

    alxndrlsn
    @alxndrlsn
    Инженер
    Та же проблема возникла, поскольку у меня под Windows7 Sp1 x64 нет "любимой" BOOST'ом MS Visual Studio IDE, а вместо MinGW и Cygwin у меня установлен более понравившийся мне TDM-GCC-64 (потому что он единственный нормально установился и заработал в паре с CodeLite IDE).

    После прочтения "Getting started on Windows" с напутственным пожеланием в конце "весело провести время"(Onward: "Good luck, and have fun!"—the Boost Developers) всё стало ясно... Разрабы не посчитали нужным разжёвывать всем и каждому "как собирать буст". Это их право.

    Итак, радуйтесь, ибо я "весело провел время" вместо вас! Начнём с того, что установим глобальную переменную BOOST_ROOT=C:\моя директория\boost_1_75_0, указывающую на каталог, куда мы распаковали архив, скачанный с официального сайта. Теперь открываем для редактирования в блокноте или с помощью Far (или TotalComander) исполняемый файл bootstrap.bat и заменим в строке SET TOOLSET=msvc, значение "тулсета" на gcc, после чего, поднявшись выше, допишем эти же три буквы в команду call .\build.bat gcc (те, кто перелопатил множество исполняемых файлов в субдиректориях "буста", наверное заметили, что в процедурах build.bat ожидается какая-то опция для дальнейшей сборки... именно её мы и указываем, хотя это было совсем не очевидно). Далее, запускаем через CMD или Far (TC) сохраненный bootstrap.bat и вуа-ля, наблюдаем: Using 'gcc' toolset. ... Bootstrapping is done. To build, run: .\b2 и т.д. и т.п. Радуемся!

    Осталось в соответствии все с теми же инструкциями "Getting started on Windows" (полезно ознакомиться) с помощью утилиты b2.exe собрать требующие сборки библиотеки.., потому что остальные, как оказалось не требуют сборки и могут быть использованы прямо из каталога, на который мы установили глобальную ссылку.

    п.с. Тем, кто хочет обойти усыпанное граблями поле с портированием nix-компиляторов под Windows и избавить себя от нетривиальной настройки понравившейся IDE, рекомендую поставить любую актуальную Ubuntu (или подобную, например, Mint), и, пользуясь многочисленными толковыми руководствами, установить через терминал QT Creator, "буст" и прочее необходимое, после чего поскорее приступить к изучению С++ в паре с QT. Всем успехов! Радоваться!
    Ответ написан
    2 комментария
  • Где ошибка в коде?

    alxndrlsn
    @alxndrlsn
    Инженер
    Смею предположить, что переменную цикла следует инициализировать стандартным способом:
    ...
     for (double x=xn; x <= xk; x += dx) {
            if (x >= log(b))  {
                y = pow(log(a * x), 3.0) / ((sqrt(b * x)) + 1.2);
                cout << format(table_format, x, y, "x >= log(b)");
            
            } else {
                y = pow(tan(a * x), 2.0) + sqrt(exp(b * x));
                cout << format(table_format, x, y, "x<log(b)");
            }
        }
    ...


    п.с. В различных вычислениях необходимо напоминать машине, что она работает с double, кроме того, лучше сразу указать double константу, нежели полагаться на встроенные преобразования из int в double. При работе с pow эмпирически обнаружил, что требование указывать степень в double формате лучше удовлетворять сразу, иначе может неправильно посчитать почему-то.

    п.п.с. лишние скобки не нужны никому, а else смотрится эстетичней.

    updated: ответ обнаружился на графике (см. в комментариях) - на интервале от 0 до ln(17.8) значения функции зашкаливают...
    Ответ написан
    3 комментария
  • При подключении SATA кабеля к жесткому диску через USB, синий индикатор на разъеме кабеля гаснет?

    alxndrlsn
    @alxndrlsn
    Инженер
    риторически: было время, когда внешние диски подключались раздвоенным USB кабелем...
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (4)