OpenCV在已有图片上画点
OpenCV是个计算机视觉和机器学习软件库。应用领域也比较广,包括图片识别,运动跟踪,计算机视觉等等。提供大量的Python接口。
在python中的安装:
pip install opencv-python
这里的案例是先使用Basemap画初始地图,然后在初始地图上画点。由于初始地图画的时间比较久,生成图片的数量也比较大,故先保存初始地图,利用plt转换经纬度坐标为像素坐标后,利用opencv加载已有图片画点。
画初始地图
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import cv2 as cvdef load_map():fig = plt.figure(figsize=(2.65, 3),dpi=300)ax = fig.add_subplot(1,1,1)plt.subplots_adjust(top=1, bottom=0, left=0, right=1, hspace=0, wspace=0)m = Basemap(llcrnrlon=118.05,llcrnrlat=24.4,urcrnrlon=118.2,urcrnrlat=24.57)m.readshapefile('island',name='island',drawbounds=True,linewidth=0.5,color='#862E21')ax.spines['top'].set_visible(False)ax.spines['right'].set_visible(False)ax.spines['bottom'].set_visible(False)ax.spines['left'].set_visible(False)return m, ax, figbasemap, ax, fig = load_map()
x, y = basemap(station['lon'].to_list(), station['lat'].to_list())
basemap.scatter(x, y, marker='D', color='#B33F2D', s=10, zorder=0)
for i in tcd.index:lons, lats = to_loc(tcd['FENCE_LOC'][i])ax.plot(lons, lats, '-', lw=0.5, color='#3D698B', marker=None, zorder=2)
plt.savefig(PLOT + '{}.png'.format('Parking_Lots'))
这个Parking_Lots.png就是后面要在上面画点的图片。
把点的经纬度坐标转为像素坐标
df_shot = gj[gj.time == time]
x = df_shot['lon'].to_list()
y = df_shot['lat'].to_list() # 获得x,y的经纬度坐标
basemap, ax, fig = load_map()# transform coor to pixel
points, = ax.plot(x, y)
xi, yi = points.get_data()
xy_pixels = ax.transData.transform(np.vstack([xi, yi]).T)
xpix, ypix = xy_pixels.T
width, height = fig.canvas.get_width_height()
ypix = height - ypix # for cv, (0,0) is at lower left while (0,0) is at upper right for others
xpix = xpix.astype('int')
ypix = ypix.astype('int')
注意:opencv(0,0)是在左下角,别的大多在右上角。所以有ypix = height - ypix
的这一步
cv加载图片画点
img = cv.imread(PLOT + 'Parking_Lots.png') # 读取图片
for xi, yi in zip(xpix, ypix):cv.circle(img, (xi, yi), 5, (0, 140, 255), -1) # BGR in cvcv.imwrite(PLOT + 'Time_Panel.png', img)
注意:
- 如果想要窗口查看图片,需要用以下代码窗口保持:
cv.imshow('img',img)
cv.waitKey()
cv.destroyAllWindows()
- cv里面的颜色是 BGR,别的都是RGB模式
cv2.circle(img, center, radius, color[, thickness[, lineType[, shift]]])
cv2.circle(输入的图片data,圆心位置,圆的半径,圆的颜色,圆形轮廓的粗细(如果为正)负数(-1)表示要绘制实心圆,圆边界的类型,中心坐标和半径值中的小数位数)
OpenCV在已有图片上画点相关推荐
- 用python的opencv库在图片上画出蓝底黑字的文本框
以下是使用Python的OpenCV库实现在图片上绘制的示例代码: import cv2# 读入图片 img = cv2.imread('example.jpg')# 在图片上绘制红色矩形框 cv2. ...
- 网页在图片上画长方形和直线,并且能控制和编辑
网页在图片上画长方形和直线,并且能控制和编辑 网页在图片上画长方形和直线,并且能控制和编辑 网页在图片上画长方形和直线,并且能控制和编辑 工作上用到了 在一张图片上画正方形和直线.并且可以控制和编辑 ...
- opencv3_java 在已有的图像上画圆圈 CircleOnImg
在已有的图像上画圆圈 CircleOnImg package opencv_java_demo;import org.opencv.core.*; import org.opencv.imgcodec ...
- C#图片处理之:在图片上画直线
在图片上画直线比画框更简单.线形的控制还是通过对Pen的设置来实现的. /**//// <summary> /// 在图片上画线 /// & ...
- python中怎样在图片上画线段_python 实现PIL模块在图片画线写字
图片上画线条 import sys from PIL import Image,ImageDraw im = Image.open("th.png") draw = ImageDr ...
- html中矩形坐标,js怎么根据坐标在图片上画出矩形框?
如图本地上传的图片,并点击获取到这个图片里每个地方的坐标,根据4个角坐标在图片上画出矩形框,该怎么画?大神支招. 我图片是显示在div里的,是不是应该用canvas显示图片? 代码: Document ...
- python怎么在散点图上画圆圈_Python如何在图片上画一个实心圆
有时候我们需要对图片进行标记操作,即在原图的基础上进行画出一些图案,这里给出画一个实心圆的相关方法,基于Python. 工具/原料 win10系统64位 winPython集成软件 方法/步骤 1 集 ...
- Python 在图片上画点、圆和矩形实例
1.在图片上画点.圆 import cv2 img = cv2.imread(img_path) # 读取图片cv2.circle(img,(100,100),20,(0,0,255),-1) # c ...
- html5在图片中加链接,JavaScript、html5、canvas实现图片上画超链接
本文主要为大家详细介绍了JavaScript html5 canvas实现图片上画超链接,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家. 1. html 2. javascrip ...
最新文章
- Bulk_Collect_Performance 比较
- CPU和软件模拟异常的执行流程
- python入门——条件语句、for、while循环4
- c++期末大作业_西城的家长注意了,北京小学校内期末考试越来越重要
- linux 更改父进程名称,[Linux进程]在父进程和子进程中分别修改变量
- 复旦大学python期末考试_在复旦大学当学渣是怎样的?
- 波形分析--DSRC 时间窗测量
- 八个经典的java多线程编程题目
- JAVA线程的生命周期
- 折腾笔记-做网线+二层傻瓜交换机部署
- autoit3转换php,AutoIt3调用动态链接库DLL
- iPhone14 /ios16不能使用蜂窝网络(浏览器提示“未激活蜂窝数据网”)
- IBM李永辉:从人工智能到大数据的终点
- 荆楚计算机专业分数线理工,荆楚理工学院分数线
- 作业一 统计软件简介与数据操作
- pandas 选取指定列
- 使用iperf测试峰值带宽
- 测试人员在软件开发过程中的任务是什么?
- MySQL(学生表、教师表、课程表、成绩表)多表查询
- oracle、sqlserver、mysql常用函数对比[to_char、to_number、to_date]