Eclipse показывает ошибку для OpenCV cvCvtColor при использовании javacv - PullRequest
2 голосов
/ 05 марта 2012

Я использовал javaCV для моего приложения для Android: Когда я пытаюсь преобразовать изображение в изображение в градациях серого, затмение не может найти константу CV_BGR2GRAY.

Кто-нибудь может мне помочь? Спасибо.

  cvCvtColor(originalImage,grayImage,CV_BGR2GRAY);

Кроме того, eclipse не может найти константу для CASCADE_FILE в

 CvHaarClassifierCascade cascade = new CvHaarClassifierCascade(cvLoad(CASCADE_FILE));

Ответы [ 4 ]

5 голосов
/ 05 марта 2012

Я использую OpenCV в версии C / C ++, но концепции, на которые я ссылаюсь, по-прежнему актуальны.

Константа OpenCV CV_BGR2GRAY принадлежит перечислительному типу, определенному в исходном файле types_c.h:

/ * Константы для преобразования цвета * /

enum {

CV_BGR2BGRA    =0,
CV_RGB2RGBA    =CV_BGR2BGRA,

CV_BGRA2BGR    =1,
CV_RGBA2RGB    =CV_BGRA2BGR,

CV_BGR2RGBA    =2,
CV_RGB2BGRA    =CV_BGR2RGBA,

CV_RGBA2BGR    =3,
CV_BGRA2RGB    =CV_RGBA2BGR,

CV_BGR2RGB     =4,
CV_RGB2BGR     =CV_BGR2RGB,

CV_BGRA2RGBA   =5,
CV_RGBA2BGRA   =CV_BGRA2RGBA,

CV_BGR2GRAY    =6,
CV_RGB2GRAY    =7,
CV_GRAY2BGR    =8,
CV_GRAY2RGB    =CV_GRAY2BGR,
CV_GRAY2BGRA   =9,
CV_GRAY2RGBA   =CV_GRAY2BGRA,
CV_BGRA2GRAY   =10,
CV_RGBA2GRAY   =11,

CV_BGR2BGR565  =12,
CV_RGB2BGR565  =13,
CV_BGR5652BGR  =14,
CV_BGR5652RGB  =15,
CV_BGRA2BGR565 =16,
CV_RGBA2BGR565 =17,
CV_BGR5652BGRA =18,
CV_BGR5652RGBA =19,

CV_GRAY2BGR565 =20,
CV_BGR5652GRAY =21,

CV_BGR2BGR555  =22,
CV_RGB2BGR555  =23,
CV_BGR5552BGR  =24,
CV_BGR5552RGB  =25,
CV_BGRA2BGR555 =26,
CV_RGBA2BGR555 =27,
CV_BGR5552BGRA =28,
CV_BGR5552RGBA =29,

CV_GRAY2BGR555 =30,
CV_BGR5552GRAY =31,

CV_BGR2XYZ     =32,
CV_RGB2XYZ     =33,
CV_XYZ2BGR     =34,
CV_XYZ2RGB     =35,

CV_BGR2YCrCb   =36,
CV_RGB2YCrCb   =37,
CV_YCrCb2BGR   =38,
CV_YCrCb2RGB   =39,

CV_BGR2HSV     =40,
CV_RGB2HSV     =41,

CV_BGR2Lab     =44,
CV_RGB2Lab     =45,

CV_BayerBG2BGR =46,
CV_BayerGB2BGR =47,
CV_BayerRG2BGR =48,
CV_BayerGR2BGR =49,

CV_BayerBG2RGB =CV_BayerRG2BGR,
CV_BayerGB2RGB =CV_BayerGR2BGR,
CV_BayerRG2RGB =CV_BayerBG2BGR,
CV_BayerGR2RGB =CV_BayerGB2BGR,

CV_BGR2Luv     =50,
CV_RGB2Luv     =51,
CV_BGR2HLS     =52,
CV_RGB2HLS     =53,

CV_HSV2BGR     =54,
CV_HSV2RGB     =55,

CV_Lab2BGR     =56,
CV_Lab2RGB     =57,
CV_Luv2BGR     =58,
CV_Luv2RGB     =59,
CV_HLS2BGR     =60,
CV_HLS2RGB     =61,

CV_BayerBG2BGR_VNG =62,
CV_BayerGB2BGR_VNG =63,
CV_BayerRG2BGR_VNG =64,
CV_BayerGR2BGR_VNG =65,

CV_BayerBG2RGB_VNG =CV_BayerRG2BGR_VNG,
CV_BayerGB2RGB_VNG =CV_BayerGR2BGR_VNG,
CV_BayerRG2RGB_VNG =CV_BayerBG2BGR_VNG,
CV_BayerGR2RGB_VNG =CV_BayerGB2BGR_VNG,

CV_BGR2HSV_FULL = 66,
CV_RGB2HSV_FULL = 67,
CV_BGR2HLS_FULL = 68,
CV_RGB2HLS_FULL = 69,

CV_HSV2BGR_FULL = 70,
CV_HSV2RGB_FULL = 71,
CV_HLS2BGR_FULL = 72,
CV_HLS2RGB_FULL = 73,

CV_LBGR2Lab     = 74,
CV_LRGB2Lab     = 75,
CV_LBGR2Luv     = 76,
CV_LRGB2Luv     = 77,

CV_Lab2LBGR     = 78,
CV_Lab2LRGB     = 79,
CV_Luv2LBGR     = 80,
CV_Luv2LRGB     = 81,

CV_BGR2YUV      = 82,
CV_RGB2YUV      = 83,
CV_YUV2BGR      = 84,
CV_YUV2RGB      = 85,

CV_BayerBG2GRAY = 86,
CV_BayerGB2GRAY = 87,
CV_BayerRG2GRAY = 88,
CV_BayerGR2GRAY = 89,

CV_YUV420i2RGB  = 90,
CV_YUV420i2BGR  = 91,
CV_YUV420sp2RGB = 92,
CV_YUV420sp2BGR = 93,

CV_COLORCVT_MAX  =100 };

Прежде всего проверьте, правильно ли включен заголовочный файл types_c.h в исходные файлы библиотеки: в моей системе UNIX я нашел его по пути /usr/local/include/opencv2/imgproc/types_c.h.

Если это так, то это может быть просто проблемой в ваших параметрах компиляции: убедитесь, что вы правильно включая и связываете все библиотечные файлы.

В моем случае яуказанный путь поиска библиотеки со следующими данными:

  • -L/usr/local/lib
  • -lopencv_core -lopencv_highgui

и явно включенные библиотеки для компилятора:

  • -I/usr/local/include/opencv

Если он все еще не работает, попробуйте вызвать функцию cv::cvCvtColor(), указав значение 6 в качестве последнего входного параметра (это int соответствует константе перечислительного типа CV_BGR2GRAY):

cvCvtColor(originalImage,grayImage, 6 );

Относительно вашего второгоили я не знаю, что сказать, это может быть из-за тех же проблем, о которых я говорил ранее.

Проверьте, исправляет ли первая проблему также и исправляет вторую.

И ПОЖАЛУЙСТА, СДЕЛАЙТЕБОЛЬШЕ РАБОТЫ В ВАШИХ ВОПРОСАХ!

1 голос
/ 19 апреля 2014

Я думаю, что эта константа: org.opencv.imgproc.ImgProc.COLOR_BGR2GRAY

Почему это не CV_BGR2GRAY - это артефакт автоматического преобразования интерфейса C в Java.

(И вопрос совершенно ясен и актуален, если вы знаете об OpenCV Java. Если нет, зачем размещать 100 строк об интерфейсе C / C ++ и стонать спрашивающему).

0 голосов
/ 16 мая 2015

Пожалуйста, импортируйте этот статический параметр в верхнюю часть файла ActivityClass.

импортируйте статический org.bytedeco.javacpp.opencv_imgproc.CV_BGR2GRAY;

вы можете использовать CV_BGR2GRAY послеэто.

0 голосов
/ 27 февраля 2014

здесь «import org.opencv.imgproc.Imgproc»

...