在论文写作的时候,一般都要求pdf格式,如果要显示图像,最好用是矢量图(我一般用MatLab画图保存为pdf格式)。但有的时候,我们拿到的图片是JPEG或者PNG格式的,本文用查找不同像素点的方法,提取JPEG或者PNG图片中曲线的信息,并保存在数组里,这样就可以用MatLab等软件重新作图,得到矢量图了。代码需要安装python的PIL(一般是自带的)或者cv2库。主要思路很简单,从代码中找到和目标像素比较接近的点,保存到变量y_values里面。啥也不说了,上代码:

# -*- coding:utf-8 -*-
import sys
import numpy as np
import matplotlib.pyplot as plt# 加载图片的名称
pathname = './sl_cjjs.png'
# Mac下用GIMP查看坐标,注意下面提到的坐标顺序是[y, x],windows下系统自带画图似乎就可以
# 起始像素点坐标(左上角)
start_points = [106, 132]
# 结束像素点点坐标(右下角)
end_points = [702, 1856]
# 要显示曲线的像素点的y的坐标范围(从上到下)
pivot_ys = [100, 700]
# 要显示曲线的y的真实坐标范围(从上到下)
pivot_metrics = [5000, 0]
# 曲线的颜色RGB
line_color = np.asarray([4., 141., 199.])
img = None
try:import cv2img = cv2.imread(pathname)# cv2颜色的顺序是GBRline_color = [line_color[2], line_color[1], line_color[0]]
except ImportError:print ('cv2 modular not found!')if img is None :try:from PIL import Imageimg = np.array(Image.open(pathname))except ImportError:print ('PIL modular not found!')if img is None :print ('PIL or cv2 not found!')sys.exit()ratio = (pivot_metrics[1] - pivot_metrics[0] + 0.0) / (pivot_ys[1] - pivot_ys[0] + 0.0) #0.0的作用是转化为float型cand = {}min_c = 100000
max_c = -1temp = {}
for r in range(start_points[0], end_points[0]):for c in range(start_points[1], end_points[1]):# rgb = img[r, c, :]rgb = img[r,c][0:3]diff1 = np.linalg.norm(rgb - line_color)if diff1 < 40:if c not in cand:cand[c] = []temp[c] = []y = pivot_metrics[0] + ratio * (r - pivot_ys[0])cand[c].append(y) # cand [c] 存储了多个 x坐标为c的有颜色的点的y坐标temp[c].append(r)if c < min_c:min_c = cif c > max_c:max_c = cn = max_c - min_c + 1
data = np.zeros((n, 1))
for i in range(n):ys = np.asarray(cand[i + min_c])y = np.mean(ys)data[i] = yx_values = [v for v in range(0, n)]
y_values = data

像素图片转矢量图片——从图像中提取曲线信息相关推荐

  1. 从单一图像中提取文档图像:ICCV2019论文解读

    从单一图像中提取文档图像:ICCV2019论文解读 DewarpNet: Single-Image Document Unwarping With Stacked 3D and 2D Regressi ...

  2. pythonopencv提取圆内图像_python – 使用OpenCV从图像中提取多边形给定...

    使用cv2.fillConvexPoly以便您可以指定2D点阵列并定义一个蒙版,该蒙版填充由这些点定义的形状在蒙版中为白色.如果多边形中定义的点是凸的(因此名称为fillConvexPoly),则应该 ...

  3. 使用OpenCV和Python从图像中提取形状

    Welcome to the first post in this series of blogs on extracting features from images using OpenCV an ...

  4. 从图像中提取特定颜色区域。

    作业: 利用 OpenCV 实现:分别找出 images 中 3 张图片里的蓝色指示牌和绿色指示牌,并将它们 写入到 green.blue 两个文件夹中. 要求: 1. 用矩形框出指示牌 2. 写入的 ...

  5. 使用 PyTesseract 和 OpenCV 从表格图像中提取文本

    Text Extraction from a Table Image, using PyTesseract and OpenCV – Fazlur Rahmanhttps://fazlurnu.com ...

  6. R语言ggplot2可视化在图像中添加脚注信息(footnote)实战:自定义脚注信息的位置、对齐形式、图的脚注、整个网格的脚注

    R语言ggplot2可视化在图像中添加脚注信息(footnote caption)实战:自定义脚注信息的位置.对齐形式.图的脚注.整个网格的脚注 目录

  7. ITK:在一幅图像中提取感兴趣区域ROI

    ITK:在一幅图像中提取感兴趣区域ROI 内容提要 输出结果 C++实现代码 内容提要 在给定图像中提取给定的关注区域(ROI) 输出结果 C++实现代码 #include "itkImag ...

  8. ITK:从二进制图像中提取最大的连接组件

    ITK:从二进制图像中提取最大的连接组件 内容提要 输入 输出 C++实现代码 内容提要 从二进制图像中提取最大的连接组件 输入 输出 输出: Number of objects: 3 C++实现代码

  9. ITK:从图像中提取轮廓

    ITK:从图像中提取轮廓 内容提要 输出结果 C++实现代码 内容提要 从图像中提取轮廓. 输出结果 There are 2 contoursContour 0: [10.5, 19] [10.460 ...

  10. 利用matlab提取水印,怎么在含有水印的图像中提取出水印

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 %水印嵌入代码 M = 256;%原始图像长度 N = 32; %水印图像长度 K = 8; I = zeros(M, M); J = zeros(N, ...

最新文章

  1. 中医大计算机应用基础考试题6,中医大 计算机应用基础 复习题 参考资料.docx
  2. 使用strace和ltrace跟踪程序调用
  3. 某程序员吐槽:面试八股文害死人!公司新来的应届生满口框架,根本不会写代码!网友:八股文只能招到背题家!...
  4. java 生成水印,Java 用html模板生成 Pdf 加水印
  5. boost::mpl::size相关的测试程序
  6. 计算机网络实验ifconfig,《计算机网络》操作系统网络配置实验.doc
  7. 汽车产业云上多地域高可用消息系统构建
  8. Linux 中使用 sort 指令分组排序详解
  9. 判断三角形是否是直角三角形
  10. Java进阶资源汇总
  11. Lucene学习之四:Lucene的索引文件格式(3)
  12. php框架开发(草稿)
  13. ABBYY FineReader 12扫描对页的步骤有哪些
  14. 探究Windows内核你知多少
  15. 【路径规划】基于matlab粒子群融合遗传算法栅格地图路径规划【含Matlab源码 526期】
  16. Hadoop MR 分区(partition)和全排序(WritableComparable)
  17. jenkins下载插件失败
  18. vue3 setup中获取地址栏参数
  19. chrome浏览器无法找到 www.baidu.com 的 DNS 地址
  20. ROS2 基础概念 服务

热门文章

  1. BIG5, GB(GB2312, GBK, ...), Unicode编码, UTF8, WideChar, MultiByte, Char说明与区别
  2. Verilog 级联IIR滤波器设计
  3. 使用  leopard硬盘安装助手 创建OS X 系统安装盘
  4. JDK命令一、javah命令(C Header and Stub File Generator)
  5. Android聊天软件开发(基于网易云IM即时通讯)——添加好友(三)
  6. 图灵之谜-《艾伦·图灵传》序
  7. 线性代数知识点(行列式篇)
  8. 替代亿图的软件-mac,windows都可用
  9. 最简单!阿里云服务器采用 LNMP一键安装包 配置 Linux+Nginx+Mysql+PHP
  10. Excel插件:方方格子