如何在OpenCv中获取图像的强度值

时间:2016-01-15 05:49:27

标签: java opencv

我是Opencv的新手,想要用Java获取Imagen的Intensity值。

我使用Paint 4x4像素制作了一个图像,希望从中获取Intensity值并在控制台中打印。

Super tiny Image Demo *这一个

Big Image Demo

import org.opencv.core.Core;

public class helloCV{
public static void main(String[]args){
    System.out.println("OpenCv v"+Core.VERSION);
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    //Code for get intesivy values
    }
}

3 个答案:

答案 0 :(得分:1)

mat.get(row,col)返回double [],此数组的大小为mat.channels()。 该数组包含强度值。

因此对于CvType.CV_8UC1,此数组的长度为1

并且对于CvType.CV_8UC3,它返回一个包含3个值的数组。

mat.rows()和mat.cols()提供mat中的行数和列数。

mat.dump()为完整的Mat提供强度值,与所有行和列的mat.get()相同。

mat.eye()返回指定大小和类型的单位矩阵。强度值将为零,并且沿着矩阵的对角线具有一个强度值。

关于Mat的更多细节:http://docs.opencv.org/2.4/doc/tutorials/core/mat_the_basic_image_container/mat_the_basic_image_container.html

答案 1 :(得分:0)

因为,OpenCV中的图像使用矩阵表示。这是一种查找特定像素的强度值的方法。

Scalar intensity = img.at<uchar>(y, x);

上面的行意味着,我们正在访问像素(y,x)并将其数据类型指定为unsigned char。

要找到给定点的相同内容,

Scalar intensity = img.at<uchar>(Point(x, y));

不要忘记导入Numpy以使用标量。

答案 2 :(得分:0)

我找到了能满足我需求的东西:

import java.net.URL;
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;

public class helloCV{
public static void main(String[]args){
    System.out.println(Core.VERSION);
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    Mat mat = Mat.eye(3, 3, CvType.CV_8UC1);
    mat = Highgui.imread("C:\\Users\\HM\\Pictures\\ImageDemo.png");
    System.out.println("mat = " + mat.dump());
    }
}

我想打印每个像素的RGB值矩阵:

run:
2.4.9.0
mat = [88, 88, 88, 127, 127, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255;
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255;
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255;
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255;
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]

其中前3个数字(88,88,88)表示第一个像素的RGB颜色,每个像素每3个数字。我没错?

Mat mat = Mat.eye(3, 3, CvType.CV_8UC1)mat.dump()是什么意思?