![](/img/trans.png)
[英]Java: How do I detect the format and read the RGB values of each pixel from an image?
[英]How to read value of the each pixel as RGB values from Mat object m in OpenCV
这是我的代码,我正在从/sdcard
读取图像rectangle.jpg
。 我想知道像素值(正常,以及RGB格式)。 我应该使用什么代码来处理它?
package com.idag.edge;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.util.Log;
import android.widget.TextView;
import org.opencv.android.OpenCVLoader;
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try
{
String path=Environment.getExternalStorageDirectory().getAbsolutePath() +"/rectangle.jpg";
Mat m=Highgui.imread(path,1);
Log.i("Paramenres on matrix", "height "+ m.height()+" width "+ m.width()+" total = "+m.total()+" channels " +m.channels());
System.out.println("element at 0 0 = "+ m.row(0).col(0).nativeObj+" element at 150 150 = "+ m.row(150).col(150).nativeObj);
}
catch(Exception e){
System.err.print("Error in the code");
Log.i("Error in imread", "Error in imread");
}
}
}
Mat.get(x, y)
- 返回Mat.get(x, y)
处所有通道值的数组 ,每个通道位于不同的位置。 如果您的图像是RGB,那么您将获得[r,g,b]的数组。
Mat.put(x, y, value)
- 将(x,y)处的通道值设置为value
。
double[] rgb = image.get(0, 0);
Log.i("", "red:"+rgb[0]+"green:"+rgb[1]+"blue:"+rgb[2]);
image.put(0, 0, new double[]{255, 255, 0});//sets the pixel to yellow
OpenCV中使用的函数是double[] Mat::get(int row, int col)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.