python讨论qq群:996113038
导语:
前两天,一个朋友找我帮忙,让我给她画一个25个刻度的“颜色条”。所谓颜色条,就是这样的。
颜色深浅代表的意思就是一个物理量的变化,颜色深代表物理量大,颜色浅代表这个物理量小。我需要在上面标注一下刻度(25个)。然后根据这位朋友给我的数据,标上数据。开始我的感觉是:这么简单的事情不是暴露智商吗?随便用matlab或者python的工具箱都可以把数据标上去啊!
可以用colorbar工具箱啊。随后发现,其实不那么简单。无论是matlab还是python自带的colorbar都只能标注最多十个刻度。就像下面的效果:
于是,我觉得自己开发一个画颜色条的代码。
代码及相关资源获取:
后台回复:colorbar,获取源代码。
开发工具:
python3.6.4
需要安装的包或者模块:
cv2
xlrd。
效果演示:
效果就是这样,2个刻度都可以标注好。
基本原理:
主要原理就是,你在网上找一个颜色条。然后放在代码的当前文件夹里面。在颜色图上标注的方法就是:用python的for循环,每一个循环增加一个刻度的像素点。然后标注上excel里面的数据。顺便再颜色条上标注一个“-”表示刻度。
说白了就是用代码测量像素点位置,然后标注数据。
部分代码:
核心代码就是下面这一段:
for i in range(0,25):
cv2.putText(bk_img,str1[i], (x1,y1), cv2.FONT_HERSHEY_SIMPLEX,0.3,(0,0,0), 1, cv2.LINE_AA)
cv2.putText(bk_img,"-", (x0,y1), cv2.FONT_HERSHEY_SIMPLEX,0.3,(0,0,0), 1, cv2.LINE_AA)
y1+=21
21代表的就是每个循环y轴方向增加21个像素点的距离。21个像素点也就是你自己需要的标尺刻度。
所以关键在于这个函数:
cv2.putText(bk_img,str1[i], (x1,y1), cv2.FONT_HERSHEY_SIMPLEX,0.3,(0,0,0), 1, cv2.LINE_AA)
这个函数意思就是在图上标注符号。str1[i]代表的是你要在图上标注什么符号。(x1,y1)代表的就是你要在图片上哪个点标注。具体的用法大家可以用查询。用help(cv2.putText)
感谢大家观看,有钱的老板可以打赏一下小编哦!
扫描下方二维码,关注公众号
参考资料:
图片来源:https://www.pexels.com/search/flower/