2018.12.6形状绘制

本文详细介绍了使用OpenCV进行图像处理的基本绘图操作,包括线段、矩形、圆形、多边形及文字的绘制方法,并展示了如何调整线条类型、颜色、宽度及填充效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

13 线段绘制

import cv2
import numpy as np
newImageInfo = (500,500,3)#元组
dst = np.zeros(newImageInfo,np.uint8)
# line 
# 绘制线段   1:dst 目标图片数据  2:begin 线段绘制的起始位置  3:end 线段绘制的终止位置  4: color 绘制用的颜色
cv2.line(dst,(100,100),(400,400),(0,0,255))
# 5:line width  线的宽度
cv2.line(dst,(100,200),(400,200),(0,255,255),20)
# 6:线条的类型  防锯齿化  看两端可以明显看出要平滑很多
cv2.line(dst,(100,300),(400,300),(0,255,0),20,cv2.LINE_AA)

# 绘制三角形
cv2.line(dst,(100,150),(50,250),(25,100,255))
cv2.line(dst,(50,250),(400,380),(25,100,255))
cv2.line(dst,(400,380),(100,150),(25,100,255))

cv2.imshow('dst',dst)
cv2.waitKey(0)

14 矩形、圆形绘制

import cv2
import numpy as np
newImageInfo = (500,500,3) #元组
dst = np.zeros(newImageInfo,np.uint8)
# 矩形绘制方法  1:dst 目标图像数据  2:左上角  3:右下角  4:颜色  5:内容是否填充  -1:填充   0<:线条加宽
cv2.rectangle(dst,(50,100),(200,300),(255,0,0),0)
# 圆形绘制方法  2:center 圆心的位置  3:r  半径  4:颜色  5:内容是否填充  -1:填充   0<:线条加宽
cv2.circle(dst,(250,250),(50),(0,255,0),2)
# 圆弧的绘制方法 2:center 圆心的位置 3:两个轴线的长度 4:angle 偏转角度 5:begin圆弧的起始角度 6:end终止角度 7:颜色  8:内容是否填充  -1:填充   0<:线条加宽
cv2.ellipse(dst,(256,256),(150,100),0,0,180,(255,255,0),-1)

# 绘制任意多边形
points = np.array([[150,50],[140,140],[200,170],[250,250],[150,50]],np.int32)
print(points.shape)
# 维度转换
points = points.reshape((-1,1,2))
print(points.shape)
cv2.polylines(dst,[points],True,(0,255,255))

cv2.imshow('dst',dst)
cv2.waitKey(0)

15文字、图片绘制

'''
# 文字的绘制
import cv2
import numpy as np
img = cv2.imread('image0.jpg',1)
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.rectangle(img,(200,100),(500,400),(0,255,0),3)
# 1:dst 2:文字内容  3:坐标  4:字体 5:字体大小 6:color 7:粗细 8:line type

cv2.putText(img,'this is flow',(100,300),font,1,(200,100,255),2,cv2.LINE_AA)
cv2.imshow('dst',img)
cv2.waitKey(0)
'''

# 图片绘制
import cv2
img = cv2.imread('image0.jpg',1)
print(img.shape)
height = int(img.shape[0]*0.2)
width = int(img.shape[1]*0.2)
imgResize = cv2.resize(img,(width,height))
print(imgResize.shape)
for i in range(0,height):
    for j in range(0,width):
        img[i+200,j+350] = imgResize[i,j]
cv2.imshow('dst',img)
cv2.waitKey(0)      

总结

哼哼 今天 就不写总结
<think>好的,用户想用Python或Excel绘制2018和2019年快递业务量的趋势图。首先,我需要回忆之前提供的引用内容,看看有没有相关示例。引用[1]提到用matplotlib和seaborn,并且有一个简单的折线图例子。引用[2]和[3]则详细描述了如何设置折线样式,比如颜色、标记、线型等,特别是针对2018和2019年的数据。 用户的需求是趋势图,所以折线图是合适的。需要确认数据格式,用户是否有月份数据,因为引用[2]提到x轴是月份,y轴是业务量。假设用户的数据结构类似,包含月份和两年的业务量。 对于Python部分,需要导入pandas和matplotlib,读取数据,然后分别绘制两条折线。根据引用[3]的代码,设置颜色、标记、线型、标签等。还要添加轴标签、标题、图例,可能还需要调整注释文本,但用户的问题中没有提到注释,所以可能不需要。 在Excel方面,用户可能需要步骤指导:选择数据,插入折线图,然后调整每条线的样式。引用[2]中的要求详细,比如颜色代码、标记形状,这些在Excel中可以通过设置数据系列格式来实现。 需要注意用户是否更倾向于Python还是Excel,但问题中两者都提到了,所以应该都提供方法。同时,确保代码示例正确,比如使用plt.subplots()创建图表,正确设置x轴为月份,y轴标签,以及图例的位置。可能还需要提示用户安装必要的库,如pandas和matplotlib。 另外,引用[1]中的示例数据是年份和销售额,但用户的数据是月份和业务量,所以在代码示例中需要调整列名,比如'Month'代替'Year',并确保数据包含2018和2019各月份的数据点。 最后,检查是否需要处理数据导入部分,比如从Excel文件读取,可能需要使用pd.read_excel,但用户的问题中没有提到数据源,所以示例中使用创建的DataFrame更安全。同时,提醒用户根据实际数据调整列名和路径。 总结步骤:Python使用matplotlib绘制两条折线,设置样式;Excel通过插入图表并手动调整样式。确保代码正确,参数与引用中的一致,如颜色代码、标记类型等。</think>### Python实现方法(使用matplotlib) #### 步骤说明 1. **数据准备**:创建包含月份和业务量的DataFrame 2. **图表初始化**:创建布和坐标系 3. **绘制双折线**:分别绘制2018/2019年数据序列 4. **样式设置**:按需求配置颜色、标记、线型等参数 5. **标注增强**:添加轴标签、标题、图例等元素 ```python import pandas as pd import matplotlib.pyplot as plt # 创建示例数据(假设每月数据) months = [f'{i}月' for i in range(1,13)] data = { 'Month': months, '2018': [25, 18, 22, 28, 32, 40, 45, 50, 48, 42, 38, 35], '2019': [30, 25, 28, 35, 40, 48, 55, 60, 58, 52, 45, 40] } df = pd.DataFrame(data) # 初始化布 fig, ax = plt.subplots(figsize=(10,6)) # 绘制2018年折线 ax.plot(df['Month'], df['2018'], color='#8B0000', # 深红色 marker='^', # 正三角形标记 linestyle='--', # 长虚线 linewidth=1.5, label='2018年') # 绘制2019年折线 ax.plot(df['Month'], df['2019'], color='#006374', # 深青色 marker='d', # 菱形标记 linestyle='-', # 实线 linewidth=1.5, label='2019年') # 设置坐标轴 ax.set_xlabel('月份', fontsize=12) ax.set_ylabel('业务量(亿件)', fontsize=12) ax.set_title('2018-2019年快递业务量趋势对比', fontsize=14) # 旋转x轴标签 plt.xticks(rotation=45) # 显示图例 ax.legend() plt.tight_layout() plt.show() ``` ### Excel实现方法 #### 操作步骤 1. **数据录入**: - A列输入月份(1月-12月) - B列输入2018年各月业务量 - C列输入2019年各月业务量 2. **图表创建**: - 选择数据区域(包括标题行) - 点击【插入】→【折线图】 3. **样式设置**: - **2018年折线**: 1. 右键点击折线选择【设置数据系列格式】 2. 线条颜色:`#8B0000` 3. 线型:虚线(长划线) 4. 标记:正三角形标记 - **2019年折线**: 1. 右键点击折线选择【设置数据系列格式】 2. 线条颜色:`#006374` 3. 线型:实线 4. 标记:菱形标记 4. **图表修饰**: - 添加坐标轴标题:x轴"月份",y轴"业务量(亿件)" - 添加图表标题 - 显示图例 [^1]: 引用自matplotlib基础绘图方法 [^2]: 引用自数据可视化样式规范 [^3]: 引用自时间序列数据可视化实践
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值