美文网首页Android
Android opencv mat 相关操作

Android opencv mat 相关操作

作者: 流浪dee猫 | 来源:发表于2019-05-29 10:40 被阅读0次

    如上图,先创建一个5x5的无符号三通道矩阵(CvType.CV_8UC3),设置每个通道的值为12,25,110,Scalar是长度为4的double数组,其中第四个恒为0。

    我们有时候需要将数据存入byte数组中,三通道的时候,需要声明一个数组大小为mat.rows()*mat.cols()*3,才能将mat的数据装下,通过mat.get(0,0,data),将数据存入data,通过mat.get可以获得每个点的值。打印数据如下:

    data的值是mat每个点的三通道值,get获取一个点的多通道值double数组,如果不设置则默认为0。

    同样,如果初始化mat为CvType.CV_8UC1,无符号单通道,则data的数组大小初始化为mat.rows()*mat.cols()即可。同时获取一个顶点的多通道double数组大小也为1,只有一个通道。

    Mark:和c,c++不一样,Java版本的openCV实现mat和byte的转换主要通过get 和 put:

    mat.get(0,0,data),可将mat的所有数据存入data,注意的是mat的通道,如果是多通道比如,3,4,则data的大小初始化为mat的rows()*cols()*N N为通道数;

    mat.get(x,y)可以获取矩阵的某个点,返回的是double[],存着该点的多通道数据,默认为0;

    mat.put(1,1,18,20,22);  //前两个代表mat的rows和cols,后面是double... 如果是多通道,需要传入相同的个数,代表的是通道的值;

    mat.put(0,0,data)可将data全部赋值到mat,同样要注意data的大小和mat的通道数。

    以上是个人理解,如有错误,恳请指正!

    相关文章

      网友评论

        本文标题:Android opencv mat 相关操作

        本文链接:https://www.haomeiwen.com/subject/ecsqyftx.html