- #include<opencv2/opencv.hpp>
- #include<iostream>
- using namespace std;
- using namespace cv;
- int main()
- {
- float array[]={1,2,3};
- float array1[]={2,3,1};
- //用數組初始化Mat
- Mat 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;
- }