可以用python 调用opencv, 调用方式:
import cv2
主要函数:
图像的旋转
图像的旋转矩阵一般为:
但是单纯的这个矩阵是在原点处进行变换的,为了能够在任意位置进行旋转变换,opencv采用了另一种方式:
为了构造这个矩阵,opencv提供了一个函数:
cv2.getRotationMatrix2D():这个函数需要三个参数,旋转中心,旋转角度(正值表示逆时针旋转),旋转后图像的缩放比例,
函数输出——仿射变换,2x3浮点矩阵
获得旋转矩阵,下面将图片绕矩阵中心,旋转90都角,
import cv2
import matplotlib.pyplot as plt
img = cv2.imread('flower.jpg')
rows,cols = img.shape[:2]
#第一个参数旋转中心,第二个参数旋转角度,第三个参数:缩放比例
M = cv2.getRotationMatrix2D((cols/2,rows/2),45,1)#这里仅仅是构造了旋转矩阵,对原图像没做任何处理
#第三个参数:变换后的图像大小
res = cv2.warpAffine(img,M,(rows,cols))#利用前面构造好的旋转矩阵,对图像img进行操作
plt.subplot(121)
plt.imshow(img)
plt.subplot(122)
plt.imshow(res)
旋转效果如下
非凸任意形状填充
cv2.fillPoly:官方文档:The function fillPoly fills an area bounded by several polygonal contours(多边形轮廓). The function can fill complex areas, for example, areas with holes, contours(轮廓) with self-intersections(交叉 )(some of their parts), and so forth.
使用方法:
cv2.fillPoly(a, [triangle], 1)
cv2.fillPoly(a, [triangle, square, hexagon], 1)#如果有多个形状: