反色
mat = 255-mat;
图像自定义区域
final = A({0,0,100,100});
获取图像的rgb分离图
vector<Mat> mv;
split(final, mv);
final.channels();
只保留其中一种颜色,并叠加回色彩图
mv[0]=Mat::zeros(cv::Size(A.rows, A.cols), CV_8UC1);
mv[0].copyTo(mv[1]);
merge(mv,final);
扩展图片
填充固定颜色
copyMakeBorder(final, final, 150, 150, 150, 150, BORDER_CONSTANT,{200,100,50,255});
镜像,无限复制
copyMakeBorder(final, final, 150, 150, 1500, 1500, BORDER_REFLECT);
image.png
BORDER_REFLECT_101 方式主要用于图像能平移
拉伸最后像素
copyMakeBorder(final, final, 150, 150, 1500, 1500, BORDER_REPLICATE);
image.png
连续复制
copyMakeBorder(final, final, 150, 150, 1500, 1500, BORDER_WRAP);
image.png
图片转mat,以及mat转图片
UIImageToMat(img1,A);
MatToUIImage(real);
修改图片尺寸
按像素非等比修改
resize(A, A, cv::Size(500,500));
等比修改
resize(A, A, cv::Size(),.01,.01,INTER_AREA);
纵向拼接两张图片 (可选择区域)
real.push_back(A);
real.push_back(B);
//
real.push_back(A(srcRect1));
real.push_back(B(srcRect2));
image.png
image.png
横向拼接两张图片 (可选择区域)
Mat real(A.rows,A.cols*2,A.type());
A.colRange(0, A.cols).copyTo(real.colRange(0, A.cols));
B.colRange(0, A.cols).copyTo(real.colRange(A.cols,A.cols*2));
image.png
Mat real(A.rows,A.cols,A.type());
A.colRange(0, A.cols/2).copyTo(real.colRange(0, A.cols/2));
//这代码的前两行可简化为 A.copyTo(real);
B.colRange(A.cols/2, A.cols).copyTo(real.colRange(A.cols/2,A.cols));
image.png