Встроенная поддержка камеры в оболочке adb для OpenCV - android - PullRequest
2 голосов
/ 04 июля 2011

С новой версией OpenCV 2.3rc мы можем запускать исполняемые файлы, которые используют OpenCV в оболочке adb, не имея дело с интерфейсами JNI для Android. Новая версия также поставляется с предустановленной встроенной поддержкой камеры. (подробности см. http://opencv.willowgarage.com/wiki/Android2.3.0). Хотелось бы узнать, можно ли захватить кадр предварительного просмотра с камеры, используя исполняемый файл, запускаемый в оболочке adb. Используя фрагмент кода в документации, я написал следующий простой код:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace cv;
const char* message = "Capture a frame!";
const char* errorMessage = "Could not open the camera!";

int main(int argc, char* argv[])
{
  // print message to console
  printf("%s\n", message);
cv::VideoCapture capture(CV_CAP_ANDROID + 0);
//cv::VideoCapture capture(CV_CAP_ANDROID + 1);//front camera for Android 2.3.3 or  newer
if( !capture.isOpened() )
{
  printf("%s\n", errorMessage);    
    return 0;
}
capture.set(CV_CAP_PROP_FRAME_WIDTH, 640);
capture.set(CV_CAP_PROP_FRAME_HEIGHT, 480);

cv::Mat frame;
capture >> frame;
if( !frame.empty() ){
imwrite("/mnt/sdcard/CaptureFrame.png", frame);
}
return 0;
}

(Сценарии сборки аналогичны примеру приложения HelloAndroid в загруженной библиотеке) Он собирается и запускается в оболочке adb, но я не могу захватить фрейм и, следовательно, записать в файл изображения. Я проверил вывод logcat, и он, кажется, загружает библиотеки и открывает камеру, но затем он застревает на этапе «захват >> кадр». Есть идеи? Спасибо Зафер

...