在 OpenCV4Android 中访问和修改 Mat 的各个元素的标准方法是什么?另外,BGR(我认为这是默认值)和灰度的数据格式是什么?
编辑:让我们更具体一些。 mat.get(row, col) 返回一个双精度数组。这个数组里有什么?
如果您只想访问一些像素,请使用double[] get(int 行, int 列)并使用写作put(int row, int col, double...data)。如果您正在考虑访问整个图像或在循环中迭代图像的数据,您应该做的最好的事情是将 Mat 数据复制到 Java 原始数据类型。完成数据操作后,只需将数据复制回 Mat 结构即可。
图片使用CV_8U,如果您有灰度图像,它将使用CV_8UC1如果你有一个 RGB 图像,它将使用一个 MatCV_8UC3(CV_8U 的 3 个通道)。CV_8U相当于java中的byte。 :)
我可以给你一个我在Java(Android平台)中使用的方法的例子binarize灰度图像:
private Mat featuresVectorBinarization(Mat fv){
int size = (int) fv.total() * fv.channels();
double[] buff = new double[size];
fv.get(0, 0, buff);
for(int i = 0; i < size; i++)
{
buff[i] = (buff[i] >= 0) ? 1 : 0;
}
Mat bv = new Mat(fv.size(), CvType.CV_8U);
bv.put(0, 0, buff);
return bv;
}
希望有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)