Opencv Mat操作大全

来源:互联网 发布:原创歌曲网站软件 编辑:程序博客网 时间:2024/05/17 02:04
#include<opencv2/opencv.hpp>#include<iostream>using namespace std;using namespace cv;int main(){float array[]={1,2,3};float array1[]={2,3,1};//用数组初始化MatMat mat=Mat(1,3,CV_32F,array);Mat mat1=Mat(1,3,CV_32F,array1);Mat tempmat;//对mat拷贝mat.copyTo(tempmat);cout<<tempmat<<endl;//选择roi,rect的四个参数分别是(x,y)坐标,第三个参数是宽度,第四个参数是高度Mat roi(mat,Rect(0,0,2,1));cout<<roi<<endl;//mat-mat1的1范数cout<<norm(mat,mat1,CV_L1)<<endl;//mat-mat1的2范数cout<<norm(mat,mat1,CV_L2)<<endl;//打印mat的内容cout<<mat<<endl;//创建对角为1的矩阵Mat eyemat=Mat::eye(4,4,CV_8U);cout<<eyemat<<endl;    //提取eyemat的1-2行,3-4列Mat submat=eyemat(Range(0,2),Range(2,4));cout<<submat<<endl;//abs(),max(),min(),+,-,*,/等操作很简单,就不写了float a[2][2]={2,3,1,2};float b[2][2]={2,1,0,-1};Mat amat(2,2,CV_32F,a);Mat bmat(2,2,CV_32F,b);cout<<amat<<endl;cout<<bmat<<endl;//求amat的逆cout<<amat.inv()<<endl;//两矩阵相乘cout<<amat.mul(bmat)<<endl;    //生成一个值为0的矩阵cout<<Mat::zeros(3,3,CV_32F)<<endl;//生成一个值为1的矩阵cout<<Mat::ones(3,3,CV_32F)<<endl;system("pause");}



#include<opencv2/opencv.hpp>#include<assert.h>using namespace cv;int main(){Mat srcImage=imread("f:/huangshan.jpg");Mat dstImage=imread("f:/Lena.jpg");    assert(srcImage.data!=NULL && dstImage.data!=NULL);Mat roi=srcImage(Rect(0,0,dstImage.cols,dstImage.rows)); //获取感兴趣区域Mat mask = imread("f:/Lena.jpg",0);namedWindow("image",WINDOW_AUTOSIZE);    roi=roi.t(); //mat转置flip(roi,roi,0); //0为上下翻转,>0为左右翻转,<0同时上下左右翻转//将掩膜拷贝到ROI中//dstImage.copyTo(roi,mask);addWeighted(roi,0.7,dstImage,0.3,0.,roi);//Mat mask = imread("f:/huangshan.jpg",0);//img.copyTo(roi,mask);imshow("image",srcImage);waitKey();return 0;}


1 1
原创粉丝点击