11.Opencv实现图形的基本绘制

1.画线

line(img,开始点,结束点,颜色,...)

img:在那个图像上画线

开始点、结束点:指定线的开始与结束位置

颜色、线宽、线型

shift:按坐标缩放比例,一般不需要该参数

需要注意坐标为(x,y)

import cv2
import numpy as np

img = np.zeros((480,640,3),np.uint8)

cv2.line(img,(10,20),(300,400),(0,0,255),5,4)  #画线坐标为(x,y) 5为线宽,4为线型锯齿(只能取-1 4 8 16)


cv2.imshow('draw',img)
cv2.waitKey(0)

2.画矩形

cv2.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]])

img:要画的圆所在的矩形或图像
pt1:矩形左上角的点
pt2:矩形右下角的点
color:线条颜色,如 (0, 0, 255) 红色,BGR
thickness:线条宽度
lineType:
8 (or omitted) : 8-connected line
4:4-connected line
CV_AA - antialiased line
shift:坐标点小数点位数

#画矩形,-1为矩阵填充,不加不填充
cv2.rectangle(img,(10,10),(100,100),(0,0,255),-1)

3.画圆

圆心,半径

#画圆,100为圆的半径
cv2.circle(img,(320,240),100,(0,0,255))
cv2.circle(img,(320,240),5,(0,0,255),-1)  #实心圆

4.画椭圆

ellipse(img,中心点,长宽的一半,角度,从那个角度开始,到那个角度结束,...)

 角度指长方体的角度

#画椭圆,0度是从右侧计算的
#cv2.ellipse(img,(320,240),(100,50),0,0,360,(0,0,255)) #第一个0为长方形的角度
#cv2.ellipse(img,(320,240),(100,50),0,0,180,(0,0,255)) #第一个0为长方形的角度,180°为椭圆的一半,顺时针计算
#cv2.ellipse(img,(320,240),(100,50),90,0,360,(0,0,255)) #相当于椭圆从0度旋转为90度
cv2.ellipse(img,(320,240),(100,50),15,0,360,(0,0,255),-1) #通过不断调整可以画出不同的图形

5.画多边形

ploylines(img,点集,是否闭环,颜色,...)

点集必须要保证为32位,填充方式与上面不同

填充多边形API:fillPoly(img,点集,颜色)

#画多边形,点集通过numpy创建,类型必须为32位,且为int型
pts = np.array([(300,10),(150,100),(450,100)],np.int32) #作为一个列表把参数传递给下面
cv2.polylines(img,[pts],True,(0,0,255))  #True代表多边形闭合
cv2.fillPoly(img,[pts],(255,200,0))   #多边形填充

6.绘制文本

putText(img,字符串,起始点,字体,字号,...)

可用字体类型

#绘制文本,不能显示中文!
cv2.putText(img,"wenbences",(10,400),cv2.FONT_HERSHEY_DUPLEX,2,(255,0,0))

以上示例完整程序:

import cv2
import numpy as np

img = np.zeros((480,640,3),np.uint8)

#画线坐标为(x,y) 5为线宽,4为线型锯齿(只能取-1 4 8 16)
#cv2.line(img,(10,20),(300,400),(0,0,255),5,4)  

#画矩形,-1为矩阵填充,不加不填充
cv2.rectangle(img,(10,10),(100,100),(0,0,255),-1)

#画圆,100为圆的半径
cv2.circle(img,(320,240),100,(0,0,255))
cv2.circle(img,(320,240),5,(0,0,255),-1)  #实心圆

#画椭圆,0度是从右侧计算的
#cv2.ellipse(img,(320,240),(100,50),0,0,360,(0,0,255)) #第一个0为长方形的角度
#cv2.ellipse(img,(320,240),(100,50),0,0,180,(0,0,255)) #第一个0为长方形的角度,180°为椭圆的一半,顺时针计算
#cv2.ellipse(img,(320,240),(100,50),90,0,360,(0,0,255)) #相当于椭圆从0度旋转为90度
cv2.ellipse(img,(320,240),(100,50),15,0,360,(0,0,255),-1) #通过不断调整可以画出不同的图形

#画多边形,点集通过numpy创建,类型必须为32位,且为int型
pts = np.array([(300,10),(150,100),(450,100)],np.int32) #作为一个列表把参数传递给下面
cv2.polylines(img,[pts],True,(0,0,255))  #True代表多边形闭合
cv2.fillPoly(img,[pts],(255,200,0))   #多边形填充

#绘制文本,不能显示中文!
cv2.putText(img,"wenbences",(10,400),cv2.FONT_HERSHEY_DUPLEX,2,(255,0,0))

cv2.imshow('draw',img)
cv2.waitKey(0)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用OpenCV绘制图形可以通过调用不同的函数来实现。在Python中,可以使用cv2.line()来绘制线段,cv2.rectangle()来绘制矩形,cv2.circle()来绘制形,cv2.ellipse()来绘制,cv2.polylines()来绘制多边形,以及cv2.putText()来绘制文本。这些函数可以在计算机视觉任务和图像处理中非常有用。例如,可以使用cv2.circle()函数绘制形。 在OpenCV中,绘制图形的步骤通常包括创建一个布,并在其上使用相应的函数绘制所需的图形。通过指定参数如颜色、线条宽度和填充等,可以对图形进行进一步的定制。例如,可以指定心坐标、半径和颜色来绘制一个形。 下面是一个示例代码,展示了如何使用OpenCV绘制图形: #include <opencv2/opencv.hpp> using namespace cv; int main() { // 载入图片 Mat srcImage = imread("dota.jpg", 1); Mat dstImage; // 转换颜色空间 cvtColor(srcImage, dstImage, COLOR_BGR2Lab); // 显示效果图 imshow("效果图", dstImage); waitKey(0); } 这个示例代码使用了cv2的imread()函数来载入一张图片,然后使用cvtColor()函数将图片转换为Lab颜色空间。最后,使用imshow()函数显示转换后的效果图。 希望这个回答能够帮助您了解如何使用OpenCV绘制图形。如果还有其他问题,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【CV 向】OpenCV 图形绘制指南](https://blog.csdn.net/qq_21484461/article/details/131333236)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [OpenCV—学习基本绘图](https://blog.csdn.net/qq_44859533/article/details/125160651)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值