参考
矩阵数据类型转换
- 数据类型: CV_8U,CV_16S,CV_32FC1…
- 函数: convertTo
基本矩阵运算
基本图像处理
记时
- getTickCount, getTickFrequency
随机数
求梯度
求边缘
- findContour,drawContour,ContourArea
Matlab –> OpenCV
//Mat& Mat::setTo(InputArray value, InputArray mask=noArray() )
//A(mask)=B(mask)-->A.setTo(B,mask) error,but I don't known why!!!
A(mask)=B(mask)-->add(B,0,A,mask)
gray=rgb2gray(rgb)-->cvtColor(rgb,gray,CV_BGR2GRAY)
一些错误
常见错误
color_R.create(input.size(),CV_64FC1);
color_R.ones(height,width,CV_64FC1);
color_R=color_R*20;
double a=color_R.at<double>(0,0);
cout<<a<<endl;
color_R=Mat::ones(input.size(),CV_64FC1)*20;
string s[]={"hello world","world good","no no no","kkk","fuck","good","hell","go","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
vector<Mat> mats;
int frameNum=30;
for(int i=0;i<frameNum;i++){
Mat M;
mats.push_back(M);
}
for(int i=0;i<frameNum;i++){
cout<<"s[i]="<<s[i]<<endl;
Mat a=mats[i];
a.create(320,240,CV_8UC1);
a=Scalar::all(0);
a.at<uchar>(100,i)=100;
imshow(s[i],a);
waitKey(30);
}
Mat <–> IplImage
//Mat a;
IplImage b=IplImage(a);
IplImage *c;
c=&b;
//IplImage *x;
Mat y=cv::Mat(x);
split <–> merge
Mat img = imread("lena.jpg", CV_LOAD_IMAGE_COLOR);
Mat BoxUp=input.clone();
Mat BoxDown=input.clone();
vector<Mat> inputMats,BoxUpMats,BoxDownMats;
split(input,inputMats);
split(BoxUp,BoxUpMats);
split(BoxDown,BoxDownMats);
for(int i=0;i<3;i++){
add(inputMats[i],15,BoxUpMats[i]);
subtract(inputMats[i],15,BoxDownMats[i]);
}
cv::merge(BoxUpMats,BoxUp);
cv::merge(BoxDownMats,BoxDown);