第一次写博客,记录一下自己学习的过程
@2.3 opencv中的绘图功能
这里使用的是pycharm
# 利用opencv绘制不同的几何形状
import numpy as np
import cv2 as cv
# 创建黑色的图像
img = np.zeros((512, 512, 3),np.uint8)
# 画线
cv.line(img, (0, 0), (511, 511), (255, 0, 0), 5)
# 画矩形
cv.rectangle(img, (384, 0), (510, 128), (0, 255, 0), -1)
# 画圆圈
cv.circle(img, (447, 63), 63, (0, 0, 255), 2)
# 画椭圆
cv.ellipse(img, (256, 256), (100, 50), 0, 0, 180, 255, -1)
cv.imshow('image', img)
cv.waitKey(0)
cv.destroyAllWindows()
对于画线函数
cv.line(img, (0, 0), (511, 511), (255, 0, 0), 5)
# 函数line参数为:void line(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0)
其中
img: 要绘制线段的图像。
pt1: 线段的起点。 本代码块中起点为(0, 0)
pt2: 线段的终点。 终点(511, 511)
color: 线段的颜色,通过一个Scalar对象定义。
(255, 0, 0):蓝色,
(0, 0, 255):红色
thickness: 线条的宽度。线宽为5
lineType: 线段的类型。可以取值8, 4, 和CV_AA, 分别代表8邻接连接线,4邻接连接线和反锯齿连接线。默认值为8邻接。为了获得更好地效果可以选用CV_AA(采用了高斯滤波)。
shift: 坐标点小数点位数![在这里插入图片描述]
为了对比,对下面两端代码可视化如下:
cv.line(img, (0, 0), (511, 511), (0, 0, 255), 2, 8)
cv.line(img, (511, 0), (0, 511), (0, 255, 0), 4, 4)
#cv2.rectangle(img, pt1, pt2, color, thickness, lineType)
# pt1 和 pt2 参数分别代表矩形的左上角和右下角两个点,而且 x 坐标轴是水平方向的,y 坐标轴是垂直方向的。
# color的值一般由RGB参数确定,可以参考上面直线上的参数
#lineType 负值代表填充整个矩形,正数就是代表线的粗细
cv.rectangle(img, (384, 0), (510, 128), (0, 255, 0), -1)
cv.rectangle(img, (384, 0), (510, 100), (0, 0, 255), 1)
cv.rectangle(img, (0, 384), (100, 128), (0, 255, 0), -1)
https://blog.csdn.net/sinat_41104353/article/details/85171185
画圆的代码可以类似得到
# # 画圆圈
cv.circle(img, (447, 63), 63, (0, 0, 255), 2)
cv.circle(img, (200, 63), 63, (0, 0, 255), -1)
# 第一个参数img是要画的图像,第二个参数(447, 63)是圆心坐标,
#第三个参数63代表半径长度,第四个参数(0, 0, 255)代表颜色,
#第五个参数2代表线的粗细,如果是-1就整个填充
#具体图像如下
cv.ellipse(img, (256, 256), (100, 50), 0, 0, 180, (0, 255, 0), -1)
cv.ellipse(img, (0, 0), (50, 20), 20, 0, 90, (255, 0, 0), -1)
cv.ellipse(img, (0, 250), (50, 20), 0, 20, 90, (0, 0, 255), -1)
第一个参数,img是要画的图像;
第二个参数,(256, 256)是椭圆的圆心坐标;
第三个参数,(100, 50)椭圆的a值和b值
第四个参数,0 椭圆沿水平方向逆时针旋转的角度
第五个参数,0 沿长轴顺时针方向开始显示的角度(这个其实没太看出来)
第六个参数,180 椭圆沿长轴顺时针显示的角度
第七个参数,(0, 255, 0)颜色
第八个参数:线的宽度,和上面类似