Opencv Mat矩阵的一些基本操作和遇过的问题

1、Mat矩阵值传递的时候,如果在函数内部类型发生改变时候,传出来的数据会变化,所以需要在函数内部重新复制一块区域给他,才能传出想要的Mat

void getDes(Mat& des)
{
	temp = Mat(10,10,CV_32FC1);
	temp.copyTo(des);
}
void main()
{
	Mat descriptor;
	getDes(descriptor);
}

2、使用colRange()和rowRange()对矩阵进行扩充(https://blog.csdn.net/mikedadong/article/details/51305640

    Mat comMatR(Mat Matrix1,Mat Matrix2,Mat &);//函数声明
    Mat comMatC(Mat Matrix1,Mat Matrix2,Mat &);//函数声明

    //comMatR(conbine matrix as row):combine  Matrix1 and Matrix2 to MatrixCom as row ,just as the matlab expression :MatrixCom=[Matrix1 Matrix1]
    Mat comMatR(Mat Matrix1,Mat Matrix2,Mat &MatrixCom)
    {

        CV_Assert(Matrix1.rows==Matrix2.rows);//行数不相等,出现错误中断    
        MatrixCom.create(Matrix1.rows,Matrix1.cols+Matrix2.cols,Matrix1.type());
        Mat temp=MatrixCom.colRange(0,Matrix1.cols);
        Matrix1.copyTo(temp);
        Mat temp1=MatrixCom.colRange(Matrix1.cols,Matrix1.cols+Matrix2.cols);
        Matrix2.copyTo(temp1);  
        return MatrixCom;
    }

    //comMatR(conbine matrix as col):combine  Matrix1 and Matrix2 to MatrixCom as rows ,just as the matlab expression :MatrixCom=[Matrix1;Matrix1]
    Mat comMatC(Mat Matrix1,Mat Matrix2,Mat &MatrixCom)
    {   
        CV_Assert(Matrix1.cols==Matrix2.cols);//列数不相等,出现错误中断    
        MatrixCom.create(Matrix1.rows+Matrix2.rows,Matrix1.cols,Matrix1.type());
        Mat temp=MatrixCom.rowRange(0,Matrix1.rows);
        Matrix1.copyTo(temp);
        Mat temp1=MatrixCom.rowRange(Matrix1.rows,Matrix1.rows+Matrix2.rows);
        Matrix2.copyTo(temp1);  
        return MatrixCom;
    }

3、常用的访问像素的at<>的类型对应有

CV_8U=0: bool或者uchar 
CV_8S=1: schar或者char
CV_16U=2: ushort
CV_16S=3: short 
CV_32S=4: int或者unsigned
CV_32F=5: float
CV_64F=6: double

其他多通道的,需要用到OpenCV自带的模板类,比如CV_8UC3对应为Vec3b,CV_64FC3对应Vec3d,具体细节可访问https://blog.csdn.net/u013021895/article/details/52045410

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值