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)

注意:

  1. 如果想要窗口查看图片,需要用以下代码窗口保持:
cv.imshow('img',img)
cv.waitKey()
cv.destroyAllWindows()
  1. cv里面的颜色是 BGR,别的都是RGB模式
  2. cv2.circle(img, center, radius, color[, thickness[, lineType[, shift]]])
    cv2.circle(输入的图片data,圆心位置,圆的半径,圆的颜色,圆形轮廓的粗细(如果为正)负数(-1)表示要绘制实心圆,圆边界的类型,中心坐标和半径值中的小数位数)

OpenCV在已有图片上画点相关推荐

  1. 用python的opencv库在图片上画出蓝底黑字的文本框

    以下是使用Python的OpenCV库实现在图片上绘制的示例代码: import cv2# 读入图片 img = cv2.imread('example.jpg')# 在图片上绘制红色矩形框 cv2. ...

  2. 网页在图片上画长方形和直线,并且能控制和编辑

    网页在图片上画长方形和直线,并且能控制和编辑 网页在图片上画长方形和直线,并且能控制和编辑 网页在图片上画长方形和直线,并且能控制和编辑 工作上用到了 在一张图片上画正方形和直线.并且可以控制和编辑 ...

  3. opencv3_java 在已有的图像上画圆圈 CircleOnImg

    在已有的图像上画圆圈 CircleOnImg package opencv_java_demo;import org.opencv.core.*; import org.opencv.imgcodec ...

  4. C#图片处理之:在图片上画直线

    在图片上画直线比画框更简单.线形的控制还是通过对Pen的设置来实现的.         /**//// <summary>         /// 在图片上画线         /// & ...

  5. python中怎样在图片上画线段_python 实现PIL模块在图片画线写字

    图片上画线条 import sys from PIL import Image,ImageDraw im = Image.open("th.png") draw = ImageDr ...

  6. html中矩形坐标,js怎么根据坐标在图片上画出矩形框?

    如图本地上传的图片,并点击获取到这个图片里每个地方的坐标,根据4个角坐标在图片上画出矩形框,该怎么画?大神支招. 我图片是显示在div里的,是不是应该用canvas显示图片? 代码: Document ...

  7. python怎么在散点图上画圆圈_Python如何在图片上画一个实心圆

    有时候我们需要对图片进行标记操作,即在原图的基础上进行画出一些图案,这里给出画一个实心圆的相关方法,基于Python. 工具/原料 win10系统64位 winPython集成软件 方法/步骤 1 集 ...

  8. Python 在图片上画点、圆和矩形实例

    1.在图片上画点.圆 import cv2 img = cv2.imread(img_path) # 读取图片cv2.circle(img,(100,100),20,(0,0,255),-1) # c ...

  9. html5在图片中加链接,JavaScript、html5、canvas实现图片上画超链接

    本文主要为大家详细介绍了JavaScript html5 canvas实现图片上画超链接,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家. 1. html 2. javascrip ...

最新文章

  1. Bulk_Collect_Performance 比较
  2. CPU和软件模拟异常的执行流程
  3. python入门——条件语句、for、while循环4
  4. c++期末大作业_西城的家长注意了,北京小学校内期末考试越来越重要
  5. linux 更改父进程名称,[Linux进程]在父进程和子进程中分别修改变量
  6. 复旦大学python期末考试_在复旦大学当学渣是怎样的?
  7. 波形分析--DSRC 时间窗测量
  8. 八个经典的java多线程编程题目
  9. JAVA线程的生命周期
  10. 折腾笔记-做网线+二层傻瓜交换机部署
  11. autoit3转换php,AutoIt3调用动态链接库DLL
  12. iPhone14 /ios16不能使用蜂窝网络(浏览器提示“未激活蜂窝数据网”)
  13. IBM李永辉:从人工智能到大数据的终点
  14. 荆楚计算机专业分数线理工,荆楚理工学院分数线
  15. 作业一 统计软件简介与数据操作
  16. pandas 选取指定列
  17. 使用iperf测试峰值带宽
  18. 测试人员在软件开发过程中的任务是什么?
  19. MySQL(学生表、教师表、课程表、成绩表)多表查询
  20. oracle、sqlserver、mysql常用函数对比[to_char、to_number、to_date]

热门文章

  1. linux下的虚拟机安装介绍
  2. iOS代码实现两张图片合成一个
  3. vue element-ui 暗黑主题应用到若依框架
  4. 字节跳动-2020秋招-笔试题剖析【5道算法题】
  5. 修改彩虹六号围攻地区服务器,彩虹六号围攻
  6. 绝地求生改文件选服务器,绝地求生怎么改文件位置 | 手游网游页游攻略大全
  7. (六) Linux的权限管理操作详细学习笔记
  8. 为知笔记,Ulysses和Effie哪个更适合记者?
  9. Java HotSpot 性能引擎架构
  10. 0-3-TyporaMarkdown语法