0

我是一个完整的java初学者。在我最后一年的项目中,我必须做一些与实时图像处理相关的事情。我现在正在做的是尝试在 JavaCv 的帮助下将 Matlab 程序转换为 Java。我将无法真正处理 3-D 矩阵。这里有3个问题。

  1. 从 RGB 3-D 图像中获取红色分量:Matlab 代码:Red=I(:,:,1);Java 代码:cvInRangeS(imgRGB, cvScalar(0, 0, 0, 0), cvScalar(255, 0, 0, 0), imgR);我可以在 java 中这样做吗?

  2. 在一维矩阵中,如何将以下代码转换为java?Matlab 代码:imgB(find(imgA~=0))=255;Matlab 代码的意思是,为 imgAint中的每个非零像素输入 255。imgB

  3. 我可以从一维IplImage类型图像中提取一些坐标吗?如果是,该怎么做?

4

1 回答 1

2

1 - 从 RGB 3-D 图像 Matlab 代码中获取 R:Red=I(:,:,1); Java代码:cvInRangeS(imgRGB, cvScalar(0, 0, 0, 0), cvScalar(255, 0, 0, 0), imgR); 我可以在java中这样做吗?

如果你想从图像中得到红色,你可以试试这个:

    BufferedImage image = ImageIO.read(new File("////////image path"));
    for (int i = 0; i < image.getWidth(); i++) {
        for (int j = 0; j < image.getHeight(); j++) {
            Color c = new Color(image.getRGB(i, j));
            int red = c.getRed();//////////here you get the Red color , you can make it array 2D 
            System.out.println(red);
        }
    }

2-在一维矩阵中,如何将以下代码转换为java?Matlab代码:imgB(find(imgA~=0))=255; Matlab 代码的意思是,对于来自 imgA 的每个非零像素,在 imgB 中放置一个 int 255。

你可以这样做

  for (int i = 0; i < imgA.getWidth(); i++) {
        for (int j = 0; j < imgA.getHeight(); j++) {
            if (Color.BLACK.getRGB() != imgA.getRGB(i, j)) {
                imgB.setRGB(i, j, 255);
            }
        }

注意:使用BufferedImage定义图像

于 2013-01-27T19:28:17.483 回答