Вопрос по 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 процентов ничто по сравнению с выигрышем во времени разработки. Другие языки на такое не способны.