MATLAB程序转C++程序的小结

该MATLAB程序主要功能是检测某一张图片是否被篡改,如果篡改,则标志出篡改区域。记录如下:

1.MATLAB中的Round函数与OpenCV中的roundMat实现相同的功能;

2.MATLAB中的reshape与OpenCV中的reshape存在一定的区别:

假设一个矩阵A为[1 2;3 4];则Matlab中B = reshape(A, 1, 4)得到的结果B=[1 3 2 4];OpenCV中B=A.reshape(0,1)得到的结果B为B=[1 2 3 4]。其中OpenCV中reshape(0,1)中的0表示通道数不变,1表示转换后的矩阵为1行;

3.OpenCV中的sortIdx函数,如果排序的序列超过32个,则返回的序列索引可能不按原来的顺序排列。比如按第一列排序,第6行的第一列数据和第56行的第一列数据是同样大小,但是它返回的索引可能第56行在第6行前面。具体是为什么我也不知道;

4.OpenCV中的row()和rowRange()。假设A是一个Mat型的矩阵,则A.row(0)表示获得它的第0行=A.rowRange(0,1)。两种方法差不多,不过在取连续多行数据的时候rowRange()更加方便。col()和colRange()类似;

5.两个行列,类型一样的数组点乘方法可以有:

       Mat F=A.*B;

或者Mat F=A.mul(B);

6.reduce(const CvArr* src(输入矩阵), CvArr* dst(输出矩阵), dim, type)  

       dim:矩阵被简化后的维数索引.0意味着矩阵被处理成一行,1意味着矩阵被处理成为一列,-1时维数将根据输出向量的大小自动选择. 

        type有以下几种取值:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值