盘锦网站建设 盘锦建站推广 盘锦建站,乐清网站推广,自己做的网站怎么给别人访问,seo营销方法OpenCV提供了许多绘制图像的API#xff0c;可以在图像上绘制各种图形#xff0c;例如直线#xff0c;矩形#xff0c;圆#xff0c;椭圆等图形。
一、画直线
利用API line#xff08;img, pt1, pt2, color, thickness, lineType, shift#xff09;可以绘制直线。
其中…OpenCV提供了许多绘制图像的API可以在图像上绘制各种图形例如直线矩形圆椭圆等图形。
一、画直线
利用API lineimg, pt1, pt2, color, thickness, lineType, shift可以绘制直线。
其中img表示在哪个图像上画直线
pt1pt2开始点和结束点用于指定线的开始和结束位置。按照坐标点的形式写入用元组的格式先列后行
color指定直线的颜色。颜色的形式也为BGR的元组形式
thickness指定线宽。数值越大线条越粗
lineType指定线性线性为0, 4, 8, 16默认为8。只有实线一种类型数字越大线越光滑
shift坐标缩放比例。一般可以不用写
示例代码如下
import cv2
import numpy as npimg np.zeros((480, 640, 3), np.uint8) # 创建一个全黑的背景图cv2.line(img, (10, 20), (300, 400), (0, 0, 255), 5, 4) # 画红色的线
cv2.line(img, (80, 100), (380, 480), (0, 0, 255), 5, 16)cv2.imshow(line, img)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果如下 二、画矩形
画矩形的API中的参数与画直线的API一样比较简单。
示例代码如下
import cv2
import numpy as npimg np.zeros((480, 640, 3), np.uint8) # 创建一个全黑的背景图cv2.rectangle(img, (20, 50), (380, 380), (0, 255, 0), 5, 16) # 用绿色画框cv2.imshow(line, img)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果如下 三、画圆
画圆我们使用以下APIcircleimg center radius color thickness lineType shift
相比较于画直线与矩形将起始点和终点改为中心点和半径其他参数相同。
示例代码如下
import cv2
import numpy as npimg np.zeros((480, 640, 3), np.uint8) # 创建一个全黑的背景图# Opencv读取的行和列与numpy相反
cv2.circle(img, (320, 240), 50, (255, 0, 0), 5, 16) # 在中心点用蓝色画圆cv2.imshow(line, img)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果如下 四、绘制椭圆
使用API cv.ellipseimg center axes angle startAngel endAngle color thickness lineType shift
其中img center color thickness lineType shift与上述参数要求一样。
Opencv画椭圆相当于将椭圆锁在一个矩形里面沿着切线画。 axes为axis的复数需要填写椭圆x轴与y轴长度的一半。
angle椭圆可以任意旋转角度可以是横着的也可以是竖着的。默认是0°且逆时针旋转
startAngle从哪个角度开始
endAngle从哪个角度结束°
开始角度和结束角度可以设置画取椭圆的一部分而不是整个椭圆。从0°~360°则为一个完整的椭圆。
当把axes的两个数值改为相等则相当于画圆形。
示例代码如下
import cv2
import numpy as npimg np.zeros((480, 640, 3), np.uint8) # 创建一个全黑的背景图
img2 np.zeros((480, 640, 3), np.uint8)
img3 np.zeros((480, 640, 3), np.uint8) cv2.ellipse(img, (320, 240), (80, 40), 0, 0, 360, (0, 255, 0), 5, 16)
cv2.ellipse(img2, (320, 240), (80, 40), 90, 0, 360, (0, 255, 0), 5, 16)
cv2.ellipse(img3, (320, 240), (80, 40), 0, 0, 180, (0, 255, 0), 5, 16)
# Opencv读取的行和列与numpy相反cv2.imshow(line, img)
cv2.imshow(line2, img2)
cv2.imshow(line3, img3)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果如下 通过改变不同的角度值可以获取不同的椭圆类型。