Вопрос по picamera

Тема в разделе "Raspberry Pi", создана пользователем Shestipaliy, 29 июн 2019.

  1. Shestipaliy

    Shestipaliy Нерд

    Этот код показывает, что на заполнения массива из камеры уходит ~700мс. Это чуть больше кадра в секунду. Интересно, почему так медленно? Ведь в тех же примерах есть веб сервер (https://picamera.readthedocs.io/en/release-1.13/recipes2.html#web-streaming) который спокойно стримит 24 кадра в секунду, а тут почти секунду один кадр выдает.

    Код (Python):
    import time
    from time import sleep
    import picamera
    import numpy as np

    with picamera.PiCamera() as camera:
        camera.resolution = (640, 480)
        camera.framerate = 24
        #time.sleep(2)
       
        output = np.empty((480, 640, 3), dtype=np.uint8)
        millis = int(round(time.time() * 1000))
        camera.capture(output, 'rgb')
        millis2 = int(round(time.time() * 1000))
        print(millis2 - millis)
       
     
  2. parovoZZ

    parovoZZ Гуру

    патаму чта питон.
     
    Igor68 нравится это.
  3. Igor68

    Igor68 Гуру

    Вам надо почитать, про то, кто такой компилятор и кто интерпретатор. Затем начать отличать код (как таковой) от скрипта (как такового). Ну соответственно и время выполнения каждого из них. Ну а потом и ...
     
  4. Shestipaliy

    Shestipaliy Нерд

    Про разницу я в курсе, но никогда не вдавался в подробности насколько эта разница велика. И вот что мне делать в моем случае, чтобы снимать изображение не 2 раза в секунду а 24?
     
  5. b707

    b707 Гуру

    очевидно переходить с питона на более бычтрый язык программирования
     
    Igor68 нравится это.
  6. Igor68

    Igor68 Гуру

    Именно так, исключив интерпретатор (в данном случае питона) из работы. Он (посредник) в данном случае ни к чему. Пусть будет ОС и Ваша программа, и больше никого.
     
  7. parovoZZ

    parovoZZ Гуру

    на малине на сях? Здесь кто-то пробовал работать с периферией малины на сях? Я подсмотрел инициализацию SPI - мама, роди меня обратно.
     
  8. ИгорьК

    ИгорьК Оракул Модератор

    Ну все. Кирдык Малине. Теперь никто с ней не станет работать, а Амперка пришлет киллера - вы убили ее продажи малин.
     
    Igor68 нравится это.
  9. parovoZZ

    parovoZZ Гуру

    А можно ссылку на амперку, чтобы было на сях? Например, I2C. Только не надо GPIO на WiringPi. Оно не дальше питона ушло.
     
  10. ИгорьК

    ИгорьК Оракул Модератор

    Да при чем здесь ссылка: самый авторитетный Гуру сказал что Си-малина сакс - все, продажи уже провалены.
     
  11. parovoZZ

    parovoZZ Гуру

    я ваще не программист. Даже образования рядом нету)))
     
  12. ИгорьК

    ИгорьК Оракул Модератор

    Судя по утверждениям, что хоть в граните высекай, - гурее гуру быть не может. Причем во всех сферах.
     
    Igor68 и Micaro нравится это.
  13. Igor68

    Igor68 Гуру

    Тут даже не быстрый язык... а отсутствие интерпритации в ходе выполнения. Типа:
    - Читаем строку кода
    - Анализируем
    - Вполняем исходя из библиотек.
    А надо:
    Выполняем и вызываем функции из библиотек по ходу выполнения, без анализа кода. Код должен быть скомпилирован.
     
  14. Igor68

    Igor68 Гуру

    Кстати Вы верно подметили. Надо делать обращение к регистрам. Вот только одно но:
    А это но заключается в том, что ОС не позволит обращение к области памяти, которое недоступно для данного пользователя. Обычное обращени это обращение к модулям, которые и образуют список устройств в /dev. Включая tty и др. Хотя чего проще стучись прямо к регистрам. Но тогда это будет не ОС, а что-то другое. Посмотреть хотя бы ls -al /dev то сразу видно для кого можно и что можно. Ну и сами понимаете, что каждое устройство доступно как файл образно говоря. Будь по другому, кстати в MS-DOS можно было спокойно чтучать в регистры, но она не ОС вовсе, а только дисковая ОС. Почти не ОС в плане распределения задач и выделения рессурсов. А только образно программа, которая умеет читать и писать файлы, загружать их в озу и передавать им управление. И даже тогда имелся биос для доступа даже к консоли. А вспомните CP/M-80, там по вектору 5 вызывались средства этой системы. Всего одна точка входа сразу на всё. А номера функций и папаметры в регистрах.
     
  15. ИгорьК

    ИгорьК Оракул Модератор

    Таки не понимаю, зачем придумали другие языки, кроме Си.
    Да и зачем Си придумали - тоже не понимаю. На асме, ясный пень, все быстрее. Или в машинных кодах лучше?
     
  16. Igor68

    Igor68 Гуру

    Машинные коды... это помнить код на каждую команду, да ещё не запутаться с выравниванием адресов. Проще писать на Asm это то же самое в плане представления, что и просто код. Только путаницы меньше с адресами и т.п.
     
  17. ИгорьК

    ИгорьК Оракул Модератор

    Таки с каждым языком, мы что-то теряем, но что-то приобретаем. Я плохо представляю Питон, но, кажется, перебрать массив в нем будет в разы проще, нежели на асме, и даже Си.

    А если говорить в целом о нетипизированных языках, то там просто развязаны руки, а главное - мозги. Да, за это чем-то расплачиваемся.
     
  18. Igor68

    Igor68 Гуру

    Про коды - это я к тому:
    Пот вспомнилось в начале 90-х работала у нас одна женщина(ей так и не дали дорпботать до пенсии - сократили), она писала на ассемблере для кр580вм80а на бумаге. Потом вручную ассемблировала то же на бумаге ну с указанием адресов меток. Таким образом формировала дамп прошивки. Потом вручную на таком программаторе, где надо было выставлять адрес байта и его значение и потом нажимать кнопку записи. И так побайтно весь массив для РФ4. Потом эту ПЗУ в контрллер, где кроме вм80 была тройка вв55 и одна ви53 ну и др. Так же линейка ОЗУ уж и не помню. Контроллер был промышленным. Потом этот контроллер в станок соритровки секций. Далее отладка оборудования и пр.
    Так что коды это и есть результат ассемблера. Аналогично и с Си. Только вот с Си вручную никак. Потому как он высокого уровня, а ассемблер это просто описание инструкций процессора и как их выстроить и есть программа на ассемблере.
     
  19. parovoZZ

    parovoZZ Гуру

    драйвер к железу пишется только на сях и только на асме. Других вариантов попросту нет.
     
  20. parovoZZ

    parovoZZ Гуру

    Компиляторы си в последнее время стали уж очень эффективными. Поэтому потеря в размере программы на 10 процентов ничто по сравнению с выигрышем во времени разработки. Другие языки на такое не способны.