Visual Studio 2017
Python 3.4
图像的基本处理1:图像的缩放操作,可以对图像进行放大或缩小,通过实验可以看到缩放的模式使用0时清晰度效果是最差的。我们需要使用到的OpenCV的函数:void resize( InputArray src, OutputArray dst, Size dsize, double fx = 0, double fy = 0, int interpolation = INTER_LINEAR );参数:dsize(0,0)表示Size(round(fx*src.cols), round(fy*src.rows)参数fx为横轴拉伸比例,fy为纵轴拉伸比率实现的主要函数代码:/*参数src: 原图像ration:等比例缩放比率type:缩放的模式 0,1,2,3,4,5,整数 */Mat resizeImg(Mat src,double ration,int type){ //缩放后的目标对象 Mat destImg; //进行图像等比例放大处理 //邻近模式 resize(src, destImg, Size(0, 0), ration, ration, type); return destImg;}int main(){ //读取本地的一张图片便显示出来 Mat img = imread('F:/mm/04.jpg'); imshow('原始图像',img); Mat destImg = resizeImg(img,1.2,0); imshow('图像放大1.2倍 0模式:', destImg); destImg = resizeImg(img, 1.2, 1); imshow('图像放大1.2倍 1模式:', destImg); destImg = resizeImg(img, 1.2, 2); imshow('图像放大1.2倍 2模式:', destImg); destImg = resizeImg(img, 1.2, 3); imshow('图像放大1.2倍 3模式:', destImg); destImg = resizeImg(img, 1.2, 4); imshow('图像放大1.2倍 4模式:', destImg); destImg = resizeImg(img, 1.2, 5); imshow('图像放大1.2倍 5模式:', destImg); waitKey(0); return 0;}
图像的基本处理2:图像的平移操作,可以实现图像按照x、y轴两个方向平移。使用到的关键函数f:void warpAffine( InputArray src, OutputArray dst, InputArray M, Size dsize, int flags = INTER_LINEAR, int borderMode = BORDER_CONSTANT, const Scalar& borderValue = Scalar());实现的关键代码:Mat pingyiImg(Mat src){ Mat destImg; //平移矩阵对象,x横轴方向平移50,y轴方向平移50 Mat moving = (Mat_
图像的基本处理3:图像旋转,通过旋转可以对图像进行任意角度的旋转,用以矫正图像的倾斜度等。实现函数代码:Mat rotateImg(Mat src){ Mat destImg; //获取变换矩阵,参数一:旋转中心坐标,参数二:旋转角度,参数三:图像缩放比例 Mat roateM = getRotationMatrix2D(Point2f(src.cols/2, src.rows/2), 60, 1); warpAffine(src, destImg, roateM, src.size()); return destImg;}
图像的基本处理4:基于三组点的仿射变换图像关键函数代码:/*目标图和源图像进行三组点计算的仿射变换*/Mat transformImg(Mat src){ Mat destImg; Point2f srcTrig[3]; Point2f dstTrig[3]; srcTrig[0] = Point2f(0, 0); srcTrig[1] = Point2f(src.cols - 1, 0); srcTrig[2] = Point2f(0, src.rows - 1); dstTrig[0] = Point2f(0, src.rows*0.55); dstTrig[1] = Point2f(src.cols*0.65, src.rows*0.55); dstTrig[2] = Point2f(src.cols*0.65, src.rows*0.25); Mat transformM = getAffineTransform(srcTrig, dstTrig); //获取变换矩阵 warpAffine(src, destImg, transformM, src.size()); return destImg;}
图像基本处理5: 图像镜像,可以对图像进行水平、垂直、水平+垂直进行镜像处理关键函数代码:Mat mirrorImg(Mat src){ Mat destImg; //图像水平镜像 Mat matrixX = (Mat_
图像基本处理6:图像透视转换处理关键函数:Mat toushiImg(Mat src){ Mat destImg; Point2f srcMatric[4]; Point2f destMatric[4]; srcMatric[0] = Point(0, 0); srcMatric[1] = Point(src.cols - 1, 0); srcMatric[2] = Point(0, src.rows - 1); srcMatric[3] = Point(src.cols - 1, src.rows - 1); destMatric[0] = Point(src.cols*0.4, src.rows*0.3); destMatric[1] = Point(src.cols*0.7, src.rows*0.1); destMatric[2] = Point(src.cols*0.1, src.rows*0.8); destMatric[3] = Point(src.cols*0.8, src.rows*0.9); Mat toushiMatric = getPerspectiveTransform(srcMatric, destMatric); warpPerspective(src, destImg, toushiMatric, src.size()); return destImg;}