Opencv常用图像处理函数(C++)
1、图像翻转
//src:输入图片;dst:输出图片;flipCode >0: 沿y-轴翻转, 0: 沿x-轴翻转, <0: x、y轴同时翻转
cv::Mat src;
cv::Mat dst;
int flipCode;
cv::flip(src, dst, flipCode);
2、图像的旋转
第一步,根据旋转中心和旋转角度获取旋转矩阵
//center:旋转中心点;angle:旋转角度;scale:缩放因子
cv::Point2f center(x, y);
double angle;
double scale;
cv::getRotationMatrix2D(center, angle, scale);
第二步,根据旋转矩阵进行仿射变换,实现图像旋转
cv::Mat M = cv::getRotationMatrix2D(center, angle, 1);
//dsize:指定输出图像dst的尺寸
cv::Size dsize;
cv::warpAffine(src, dst, M, dsize);
3、空间颜色转换
//code:颜色映射码,格式为cv_src颜色空间2dst颜色空间,如CV_BGR2GRAY;dstCn:目标图像通道数,取0则由src和code决定
void cv::cvtColor(const cv::Mat &src, cv::Mat &dst, int code, int dstCn = 0 );
4、图像通道的分离与合并
//分离
vector<cv::Mat> channels;
cv::split(src, channels);
//合并
cv::merge(channels, dst);
5、图像平滑(常见滤波器)
//取ksize为5x5
//blur()函数:均值滤波,用ksize内像素的平均灰度值来代替中心点的灰度值
cv::blur(src, dst, cv::Size(5, 5));
//medianBlur()函数:中值滤波,用ksize内所有像素的中值代替中心点的灰度值
cv::medianBlur(src, dst, 5);
//GaussianBlur()函数:高斯滤波,ksize内的像素根据与中心点像素的位置关系被赋予不同的权值
double sigmaX;//高斯核函数在X方向的的标准偏差
double sigmaY;//高斯核函数在Y方向的的标准偏差,若sigmaY=0,则设为sigmaX,若sigmaX和sigmaY都是0则由ksize的宽高计算得出
cv::GaussianBlur(src, dst, cv::Size(5, 5), sigmaX, sigmaY);