В чем преимущество 3-мегапиксельного датчика OV3660 на камере ESP32 M5Stack, если он может сохранять только до 2-мегапиксельных изображений?
Я делаю автономную фотокамеру, и модули на базе ESP32 кажутся мне хорошо подходящими для моего проекта из-за легкого включения TFT-экрана видоискателя и слота для TF-карт в один пакет. Я не заинтересован в сохранении видео или веб-потоковой передачи. Я работал с камерой TTGO ESP32, которая использует 2 - мегапиксельный сенсор OV2640 и может сохранять полные кадры с разрешением 2MP UXGA (1600x1200) (хотя и с обязательным включенным сжатием JPEG-мне удалось получить только 1,3-мегапиксельные изображения без сжатия).
Теперь я вижу, что существует версия камеры ESP32, которая использует датчик OV3660 3MP (называемый "камерой таймера M5Stack"). Тем не менее, спецификации для этой камеры https://docs.m5stack.com/#/en/unit/timercam скажем, он может сохранить до максимума UXGA - т. Е. 2MP изображений.
Так в чем же преимущество 3-мегапиксельного сенсорного чипа, если вы можете сохранить только 2-мегапиксельные изображения? Или есть способ сохранить полное разрешение сенсора 3 МП (то есть 2048 x 1536) кадров с этой камеры?
Спасибо
@WildCat, 👍2
3 ответа
Лучший ответ:
Я напрямую связался с сотрудниками M5Stack, и они заверили меня, что допустили ошибку в своих исходных спецификациях веб-страницы и что камера действительно поддерживает полный захват на 3 МП. Поэтому я купил одну из этих камер с таймером M5Stack и протестировал ее. Я могу подтвердить, что устройство сохранит изображение на 3 МП с полным разрешением QXGA (2048 x 1536). Эта опция была недоступна в приложении Win10, которое они предоставляют, но это было возможно только с их официальным примером Arduino "веб-камера". Это примерный скетч Wi-Fi веб-сервера, и один из вариантов-QXGA, и это работает.
Таким образом, окончательный ответ на мой вопрос (основанный на практическом опыте) заключается в том, что преимущество использования OV3660 заключается в том, что он может предоставлять 3-мегапиксельные снимки, а исходные характеристики, предоставленные M5Stack, вводили в заблуждение, отсюда путаница, выраженная в моем вопросе.
Также было бы интересно услышать, удалось ли кому-нибудь заставить OV3660 работать на полной скорости 3 МП на других универсальных платах ESP32. До сих пор я не видел другого примера, опубликованного в Интернете.
Предел не в камере, а в памяти.
При 3 мегапикселях у вас 3145728 пикселей. При 3 байтах на пиксель (по 8 бит красного, зеленого и синего цветов) для хранения изображения требуется 9437184 байта. Это больше, чем может поместиться в 8 МБ PSRAM.
1600x1200, вероятно, будет одним из стандартных разрешений, которые может захватить конкретная используемая камера, и, вероятно, это самый большой размер, который меньше 8 МБ для одного кадра.
Итак, в чем преимущество 3-мегапиксельной камеры? Ну, для вас ничего, кроме стоимости. Вероятно, дешевле использовать более новую 3-мегапиксельную камеру, чем более старую 2 - мегапиксельную камеру.
Тем не менее, вполне возможно работать с желаемыми разрешениями. Это разрешение известно как QXGA
и поддерживается драйвером OV3660 в библиотеке камер ESP32. Однако есть некоторые предостережения:
- Вы должны использовать сжатие JPEG. Это не только для того, чтобы сделать изображение достаточно маленьким, чтобы поместиться в PSRAM, но и для того, чтобы можно было записать весь кадр в PSRAM достаточно быстро, чтобы вы не пропускали биты данных.
- Вы не сможете "делать" что-либо с изображением, кроме как отправлять его куда-либо еще (например, на SD-карту или веб-сервер). Там просто недостаточно места, чтобы распаковать изображение.
Камера таймера m5stack X (OV3660) не имеет поддержки. В этом устройстве нет ничего о том, как мигать и использовать микропитон. Есть cameratool, который вы можете скачать и сделать снимки через последовательный порт, есть стандартное программное обеспечение arduino, которое вы можете прошить, и все. Я скучаю по некоторым руководствам о том, как прошить на нем микропайтон и заставить его работать с mqtt и более сложными настройками. Я не человек arduino, просто хочу закодировать на нем какой-нибудь python.
Я купил 2 из этих камер, и они сидят на полке в течение 6 месяцев с 0 использованием. Однажды, когда кто-нибудь опубликует полную микропрограмму микропроцессора для этой камеры, я попробую.
PS: Я пытался скомпилировать микропрограммное обеспечение micropython с поддержкой OV3660, но безуспешно.
- Программаторы для этой платы отсутствуют - Программирование ESP32 Cam с помощью Ardunio IDE
- ESP32 CAM не смог вовремя получить кадр
- Камера esp32 и датчик PIR
- Не удается включить распознавание лиц на esp32 cam : CORRUPT HEAP: Bad head at 0x3ffe2eb4. Expected 0xabba1234 got 0x00000008 abort()
- Невозможно установить библиотеку esp_camera
- esp32 - кулачок застрял в повторном башмаке
- ESP32 cam offline
- Как считывать аналоговое значение на ESP32-CAM с включенным считывателем SD-карт?
Конечно, но это предполагает несжатый видеопоток в 3 байта (24 бита) на пиксель. Эти датчики OmniVision могут выводить цвет со скоростью 16 бит на пиксель в формате YUYV. Таким образом, это будет несжатое видео объемом 6 Мб, оставляющее 2 МБ для рабочих материалов. Кроме того, эти датчики OV также имеют встроенное сжатие видеопотока в формате JPEG на кристалле до того, как он попадет на ESP32,-поэтому ОЗУ объемом 8 МБ должно быть достаточно, по крайней мере, для более сжатых потоков. Я предполагаю, что должна быть какая-то другая причина, по которой дизайнеры выбрали этот 3-мегапиксельный чип. Возможно, стоимость, как вы говорите, или маркетинг - но мне интересно, есть ли в этом что-то большее., @WildCat
@WildCat Вы знаете, что нужно сделать со сжатыми изображениями, чтобы что-то с ними сделать? Вы должны их распаковать. Таким образом, сжатие на самом деле контрпродуктивно, так как вам придется использовать как сжатые, так и несжатые версии., @Majenko
@Mejenko. Да, но вы можете просто перекачать сжатый поток на TF - карту, не распаковывая его в оперативной памяти, и вы можете использовать версию с низким разрешением для видео в видоискателе-именно так работает OV2640 в камере TTGO ESP32. Я могу сохранять сжатые 2-мегапиксельные изображения, но если я уменьшу или отключу сжатие, PSRAM будет недостаточным. Теоретически они могли бы заставить это работать. Интересно, есть ли у кого - нибудь-и может ли он сказать нам, как это сделать., @WildCat
@WildCat Вы также должны учитывать скорость - запись в PSRAM не быстрая, и вы должны уметь записывать весь кадр в PSRAM достаточно быстро, чтобы захватить его. Espressif рекомендует использовать JPEG для всего, что больше CIF, и впоследствии конвертировать его., @Majenko
QXGA поддерживается ESP-IDF, поэтому нет причин, по которым вы не могли бы этого сделать. Просто следуйте [одному из примеров](https://github.com/espressif/esp32-camera) и измените размер кадра на " FRAMESIZE_QXGA`, @Majenko
@Mejenko. Спасибо за этот ответ. Я видел эту опцию в библиотеках, но тот факт, что она существует, не обязательно означает, что конкретный аппаратный модуль может это сделать. Я задал этот вопрос, потому что производитель M5Stack говорит, что выходное разрешение камеры таймера M5Stack ограничено 2 мегапикселями. Мне нужно знать, в частности, об этом модуле. Возможно, если я подключу датчик OV3660 к универсальной плате ESP32, это может сработать, но мне нужно знать, что купить - поэтому важны конкретные детали. Вы действительно пробовали использовать камеру таймера M5Stack и она работает?, @WildCat
@WildCat Камера с таймером M5Stack-это всего лишь универсальный ESP32 с OV3660. В этом нет ничего особенного. Вполне возможно, что они меняли модуль камеры между версиями и никогда не обновляли эту часть веб-сайта., @Majenko
Ваши ответы разумны в теории, но на практике могут отличаться из-за пробелов в детальных знаниях. Согласно моим поискам, несколько человек пытались (и не смогли) заставить OV3660 работать, например [me-no-dev][https://github.com/espressif/esp32-camera/blob/master/sensors/ov3660.c] и некоторые думают, что это может быть невозможно [bkeevil][https://github.com/bkeevil/esp32-cam]. Мне еще ни от кого не приходилось видеть 3 - мегапиксельное изображение, сделанное с помощью OV3660 и ESP32-отсюда мой вопрос. Но, возможно, люди из M5Stack раскололи этот орех и упустили трюк в маркетинге. Я еще немного покопаюсь., @WildCat