OpenCV新手入门,如何用它平移缩放和旋转图片 |
您所在的位置:网站首页 › opencv旋转图像函数 › OpenCV新手入门,如何用它平移缩放和旋转图片 |
原标题:OpenCV新手入门,如何用它平移缩放和旋转图片 子豪 发自 凹非寺 量子位 报道 | 公众号 QbitAI OpenCV是一个跨平台计算机视觉和机器学习算法库。 它不仅能用来实现各种复杂的算法,还能够对图像进行 预处理:包括图像的平移、旋转、缩放、翻转、裁剪。 最近一位来自印度的小哥Raoof Naushad发布了一篇相关教程,希望把这些知识分享给初学者。 图像平移 我们使用OpenCV提供的仿射变换函数cv.warpAffine沿x和y轴移动图像。 Step1. 调用一个函数cv.warpAffine。 Step2. 创建一个平移矩阵,这一步需要借助NumPy进行。 Step3. 将img(需要变换的图像)、transMAT(平移矩阵)和Dimensions(维度)代入仿射变换函数cv.warpAffine,输入x和y以确定平移多少。 向左、向上移动,则x、y设为负数,反之则为正数。 Step4. 采用cv.imshow函数显示图像。 ## Translation deftranslation(img,x,y): tranMAT = np.float32([[ 1, 0,x],[ 0, 1,y]]) dimensions = (img.shape[ 1],img.shape[ 0]) returncv.warpAffine(img,transMAT,dimensions) translated = translation(img, -100, 100) cv.imshow( "Translated",translated) cv.waitKey( 0) 图像旋转 在OpenCV中旋转图像,可以将任何点用作旋转的中心,同样使用cv.warpAffine函数以及和上面相同的参数。但是旋转矩阵与图像平移是不同的。 Step1. 创建一个旋转函数,定义图像img、旋转角度angle和旋转点rotPoint。 Step2. 利用cv.getRotationMatrix2D(矩阵旋转与缩放)创建一个旋转矩阵rotMAT,其中包括旋转点、旋转角度和比例因子。如果不需要比例因子,则将其设为1.0。 Step3. 输入旋转角度、旋转点对应数值。(如不需要设置旋转点,则在Step1中设为空值None) ## Rotation defrotate(img,angle,rotPoint=None): (height,width) = img,shape[: 2] ifrotPoint isNone: rotPoint = (width// 2,height// 2) rotMAT = cv.getRotationMatrix2D(rotPoint,angle, 1.0) dimension = (width,height) returncv.warpAffine(img,rotMat,dimension) rotated = rotated(img, 20) cv.imshow( "Rotated",rotated) cv.waitKey( 0) 图片缩放 在OpenCV中需要用到函数cv.resize(img, (500, 500), interpolation=cv.INTER_LINEAR)。 根据缩小或放大图像的需要,参数指定插值方法可以选择cv.INTER_AREA(区域插值)、cv.INTER_CUBIC(三次样条插值)、cv.INTER_LINEAR(线性插值)。 如需放大图像,可以采用 INTER_LINEAR(效率较高)或INTER_CUBIC(效率较低); 如需缩小图像,可以采用 INTER_AREA。 ## Resize resized = cv.resize(img( 500, 500),interpolation=cv.INTER_LINEAR) cv.imshow( "resized",resized) cv.waitKey( 0) 图像翻转 使用OpenCV中的cv.flip函数,该函数支持图像的翻转(垂直翻转、水平翻转,以及同时翻转均可)。 cv.flip(img,flipcode)翻转模式有三种:0为垂直翻转,1为水平翻转,-1 为两个方向同时翻转。 ## Flipping flipped = cv.flip(img, 0) cv.imshow( "Flipped",flipped) cv.waitKey( 0) 图像裁剪 运用Cropped = image[a1:a2,b1:b2] 裁剪图像img得到一个矩形,高度从a1到a2,宽度从b1到b2。 ## Cropping cropped = img[ 100: 200, 100: 200] cv.imshow( "Cropped",cropped) cv.waitKey( 0) Raoof Naushad不仅发布了这篇教程,还分享了用于基本和高级图像处理的OpenCV速查表,感兴趣的朋友可以通过下方链接查看。 原文链接: https://medium.com/analytics-vidhya/image-transformations-opencv-2021-de3ca97373ed Raoof Naushad的GitHub主页: https://github.com/raoofnaushad — 完— 本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。 加入AI社群,拓展你的AI行业人脉 量子位「AI社群」招募中!欢迎AI从业者、关注AI行业的小伙伴们扫码加入,与 50000+名好友共同关注人工智能 行业发展&技术进展: 量子位 QbitAI · 头条号签约作者 վ'ᴗ' ի 追踪AI技术和产品新动态 一键三连「分享」、「点赞」和「在看」 科技前沿进展日日相见~返回搜狐,查看更多 责任编辑: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |