Мне нравится делать снимки с использованием RPi не менее 60 Гц. Мой код находится в C++, и у нас есть библиотека here для интерфейса C++. Но эта библиотека имеет максимум 30 Гц. Моя цель минимальная 60 Гц. Пока что я нашел raspistill может сделать до 90 Гц, поэтому я пытаюсь связать свою программу на C++ с кодом raspistill. Я нашел одну библиотеку здесь PiCam, которая имеет прямой интерфейс для raspistll. Не очень уверен, он может пойти на 60 Гц, я все еще пытаюсь проверить его и иметь несколько проблем. Мои запросы:Чтение изображения камеры с использованием raspistill из программы на C++
(1) Как возможно иметь 60 Гц fps при RPi с использованием C++?
(2) Чтобы взаимодействовать с PiCam, я уже скомпилировал, построил и установил библиотеку без проблем. Но я получаю черное изображение, когда снимаю. В чем может быть проблема? Часть моего кода показана ниже.
CCamera* cam = StartCamera(640, 480,60,1,true);
char mybuffer[640 * 480 * 4];
int ret = cam->ReadFrame(0, mybuffer, sizeof(mybuffer));
cout << " ret " << ret << endl;
Mat img(480, 640, CV_8UC4,mybuffer);
imwrite("img.jpg", img);
img.jpg помещен в черный цвет.
(3) Использование PiCam, как можно изменить изображение серого?
Да, в настоящее время я использую эту библиотеку, и она имеет максимальную частоту кадров 30 Гц. Вы тестировали, чтобы иметь 90 Гц fps? Конфигурация для настройки fps отсутствует. Моя обработка изображений занимает около 10 мс, поэтому, если я прочитаю изображение из файла, я могу достичь до 100 Гц. Но я использую эту библиотеку для размера кадра 640 x 480, я могу иметь максимум 30 Гц. Так что чтение из камеры является узким местом для меня. Как установить более высокие значения fps с помощью этого lbrary? – batuman
Я могу читать 90 + fps. Я не устанавливаю скорость, я просто читаю фреймы как можно быстрее. Попробуйте прочитать 1000 кадров и измерить время, а затем вычесть время стабилизации 3 секунды. Я получил около 14 секунд. –
Спасибо, я буду реализовывать потоки, разделяя поток чтения и обработки потока. – batuman