子豪 发自 凹非寺
OpenCV是一个跨平台计算机视觉和机器学习算法库。
它不仅能用来实现各种复杂的算法,还能够对图像进行 预处理:包括图像的平移、旋转、缩放、翻转、裁剪。
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的GitHub主页:
完—
加入AI社群,拓展你的AI行业人脉
վ“ᴗ” ի 追踪AI技术和产品新动态
本文相关词条概念解析:
旋转
旋转(xuánzhuǎn),基本解释:rotate;circle;spin;revolve绕一个轴转动车轮在旋转。(很多地方误注为xuánzhuǎn)。旋转,是在平面内,把一个图形绕点O旋转一个角度的图形变换叫做旋转,点O叫做旋转中心,旋转的角叫做旋转角,如果图形上的点P经过旋转变为点Pˊ,那么这两个点叫做这个旋转的对应点。