【问题标题】:Image processing java图像处理java
【发布时间】:2013-01-28 16:48:29
【问题描述】:
我是一个完整的java初学者。在我最后一年的项目中,我必须做一些与实时图像处理相关的事情。我现在正在做的是尝试在 JavaCv 的帮助下将 Matlab 程序转换为 Java。我将无法真正处理 3-D 矩阵。
这里有 3 个问题。
从 RGB 3-D 图像中获取红色分量: Matlab 代码:Red=I(:,:,1); Java 代码:cvInRangeS(imgRGB, cvScalar(0, 0, 0, 0), cvScalar(255, 0, 0, 0), imgR); 在 java 中可以这样做吗?
在一维矩阵中,如何将下面的代码转换成java? Matlab代码:imgB(find(imgA~=0))=255; Matlab代码的意思是,在imgB中放一个int 255对于来自 imgA 的每个非零像素。
我可以从一维IplImage 类型的图像中提取一些坐标吗? 如果可以,该怎么做?
【问题讨论】:
标签:
java
matlab
image-processing
javacv
【解决方案1】:
1 - 从 RGB 3-D 图像中获取 R Matlab 代码:Red=I(:,:,1);爪哇
代码: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(查找(imgA~=0))=255; Matlab 代码的意思是,在里面放一个 int 255
来自 imgA 的每个非零像素的 imgB。
你可以这样做
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 定义图像