2015-03-27 1 views
2

Я не знаю, как указать цвет, используя Scalar class в нижеприведенном методе?Как указать цвет с помощью Scalar class

Features2d.drawKeypoints(mKeyPoints_0, mKeyPoints_0, outImage, Scalar color, Features2d.DRAW_RICH_KEYPOINTS); 
+0

Почему этот помеченный C++? – MuertoExcobito

+0

@MuertoExcobito, потому что opencv имеет C++ Api, а также – user2121

+1

OpenCV также имеет привязки python, но так как ваш пример кода находится в java (?), Вероятно, не имеет смысла помечать его как C++. – MuertoExcobito

ответ

3

Использование Scalar для указания цвета, в зависимости от типа Mat. Попытка сохранить/нарисовать Red цвет в оттенках серого Mat не удастся.

  • Тип CV_8UC1 - черно-белое изображение

    //8 bits per pixel and so range of [0:255]. 
    Scalar color = new Scalar(255) 
    //For type: 16UC1, range of [0:65535]. For 32FC1 range is [0.0f:1.0f] 
    
  • Тип CV_8UC3 - 3 канала цветного изображения

    // BLUE: color ordering as BGR 
    Scalar color = new Scalar(255, 0, 0) 
    
  • Тип CV_8UC4 - цветное изображение с прозрачностью

    //Transparent GREEN: BGRA with alpha range - [0 : 255] 
    Scalar color = new Scalar(0, 255, 0, 128) 
    

В этом вопросе первым параметром drawKeyPoints должно быть ваше исходное изображение (Mat), а не ключевые точки. Код был бы скомпилирован, потому что MatOfKeyPoint получен из Mat