7

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

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

3 回答 3

11

指定颜色的用法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

于 2015-03-28T08:54:49.800 回答
2

您可以使用下面的方法将 ARGB 转换为 Scalar

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.

于 2019-08-08T15:33:18.833 回答
1

请务必查看 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 是双精度数,每个颜色通道一个。

于 2015-03-27T14:48:05.893 回答