如何使用Scalar类指定颜色

时间:2015-03-27 13:31:59

标签: java opencv opencv3.0

我不知道如何在下面发布的方法中使用Scalar类指定颜色?

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

3 个答案:

答案 0 :(得分:6)

使用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

答案 1 :(得分:1)

您可以使用以下方法将ARGB转换为标量

public static Scalar argbtoScalar(int r, int g, int b, int a) {
    Scalar s = new Scalar(b, g, r, a);
    return s;
}

a代表Alpha,它指定了transparency

答案 2 :(得分:0)

请务必查看Java API(http://docs.opencv.org/java/3.1.0/org/opencv/core/Scalar.html

Scalar colour = new Scalar(B,G,R);

其中B,G,R是双打,每个颜色通道一个。