如何在OpenCV中从Mat对象m读取每个像素的值作为RGB值(How to read value of the each pixel as RGB values from Mat object m in OpenCV)
这是我从/sdcard阅读image 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"); } } }This is my code where I am reading image rectangle.jpg from /sdcard. I want to know the pixel value (normal, as well as in RGB format). What code should I use to deal with it?
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 yellowMat.get(x, y) - returns an array of all the channels values at (x, y), each channel in a different place. If your image is RGB so you will get an array of [r, g, b].
Mat.put(x, y, value) - sets the channel values at (x, y) to 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更多推荐
发布评论