精华内容
下载资源
问答
  • python 画子图股票成交图像

    千次阅读 2019-10-04 22:09:00
    在技术分析时通常会将价格和成交量相结合来判断主力的动向,比如在主力拉高股价出货时,往往当日的股价会出现“过山车”的走势,同时成交会出现近期的“天量”。 由于K线和成交是两种类别的技术指标,我们不仅...

    成交量指的是当天交易日内股票交易成功的数量,以手为单位(1手等于100股)。在技术分析时通常会将价格和成交量相结合来判断主力的动向,比如在主力拉高股价出货时,往往当日的股价会出现“过山车”的走势,同时成交量会出现近期的“天量”。

    由于K线和成交量是两种类别的技术指标,我们不仅要将它们分别在两个子图上进行显示,而且需要协调两个子图的位置和比例。此处导入matplotlib的gridspec模块创建子图,GridSpec可自定义子图的位置和调整子图行和列的相对高度和宽度,如下所示:

    
    # 成交量可视化
    #绘制K线图+移动平均线+成交量
    
    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.gridspec as gridspec#分割子图
    import pandas_datareader.data as web
    import datetime
    import mpl_finance as mpf #替换 import matplotlib.finance as mpf
    
    plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
    plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
    
    df_stockload = web.DataReader("600797.SS", "yahoo", datetime.datetime(2018,6,1), datetime.datetime(2019,1,1))
    print(df_stockload.info())
    
    fig = plt.figure(figsize=(8,6), dpi=100,facecolor="white")#创建fig对象
    
    gs = gridspec.GridSpec(2, 1, left=0.06, bottom=0.15, right=0.96, top=0.96, wspace=None, hspace=0, height_ratios=[3.5,1])
    graph_KAV = fig.add_subplot(gs[0,:])
    graph_VOL = fig.add_subplot(gs[1,:])
    
    #绘制K线图
    mpf.candlestick2_ochl(graph_KAV, df_stockload.Open, df_stockload.Close, df_stockload.High, df_stockload.Low, width=0.5,colorup='r', colordown='g')  # 绘制K线走势
    
    #绘制移动平均线图
    df_stockload['Ma20'] = df_stockload.Close.rolling(window=20).mean()#pd.rolling_mean(df_stockload.Close,window=20)
    df_stockload['Ma30'] = df_stockload.Close.rolling(window=30).mean()#pd.rolling_mean(df_stockload.Close,window=30)
    df_stockload['Ma60'] = df_stockload.Close.rolling(window=60).mean()#pd.rolling_mean(df_stockload.Close,window=60)
    
    graph_KAV.plot(np.arange(0, len(df_stockload.index)), df_stockload['Ma20'],'black', label='M20',lw=1.0)
    graph_KAV.plot(np.arange(0, len(df_stockload.index)), df_stockload['Ma30'],'green',label='M30', lw=1.0)
    graph_KAV.plot(np.arange(0, len(df_stockload.index)), df_stockload['Ma60'],'blue',label='M60', lw=1.0)
    
    graph_KAV.legend(loc='best')
    graph_KAV.set_title(u"600797 浙大网新-日K线")
    graph_KAV.set_ylabel(u"价格")
    graph_KAV.set_xlim(0, len(df_stockload.index))  # 设置一下x轴的范围
    graph_KAV.set_xticks(range(0, len(df_stockload.index), 15))  # X轴刻度设定 每15天标一个日期
    
    #绘制成交量图
    graph_VOL.bar(np.arange(0, len(df_stockload.index)), df_stockload.Volume,color=['g' if df_stockload.Open[x] > df_stockload.Close[x] else 'r' for x in range(0,len(df_stockload.index))])
    graph_VOL.set_ylabel(u"成交量")
    graph_VOL.set_xlabel("日期")
    graph_VOL.set_xlim(0,len(df_stockload.index)) #设置一下x轴的范围
    graph_VOL.set_xticks(range(0,len(df_stockload.index),15))#X轴刻度设定 每15天标一个日期
    graph_VOL.set_xticklabels([df_stockload.index.strftime('%Y-%m-%d')[index] for index in graph_VOL.get_xticks()])#标签设置为日期
    
    #X-轴每个ticker标签都向右倾斜45度
    for label in graph_KAV.xaxis.get_ticklabels():
       label.set_visible(False)#隐藏标注 避免重叠
    
    for label in graph_VOL.xaxis.get_ticklabels():
       label.set_rotation(45)
       label.set_fontsize(10)#设置标签字体
    
    plt.show()
    
    

    输出图像:
    在这里插入图片描述

    展开全文
  • Python OpenCV】图像直方 calcHist方法 equalizeHist方法 (一)图像直方 图像的构成是有像素点构成的,每个像素点的值代表着该点的颜色(灰度或者彩色)。所谓直方就是对图像的中的这些像素点的值...

    【Python OpenCV】图像直方图 calcHist方法 equalizeHist方法

     

    (一)图像直方图

    图像的构成是有像素点构成的,每个像素点的值代表着该点的颜色(灰度图或者彩色图)。所谓直方图就是对图像的中的这些像素点的值进行统计,得到一个统一的整体的灰度概念。直方图的好处就在于可以清晰了解图像的整体灰度分布,这对于后面依据直方图处理图像来说至关重要。

    一般情况下直方图都是灰度图像,直方图x轴是灰度值(一般0~255),y轴就是图像中每一个灰度级对应的像素点的个数。

    那么如何获得图像的直方图?首先来了解绘制直方图需要的一些量:灰度级,正常情况下就是0-255共256个灰度级,从最黑一直到最亮(白)(也有可能统计其中的某部分灰度范围),那么每一个灰度级对应一个数来储存该灰度对应的点数目。也就是说直方图其实就是一个1*m(灰度级)的一个数组而已。但是有的时候我们不希望一个一个灰度的递增,比如现在我想15个灰度一起作为一个灰度级来花直方图,这个时候我们可能只需要1*(m/15)这样一个数组就够了。那么这里的15就是直方图的间隔宽度了。

    Opencv给我们提供的函数是cv2.calcHist(),该函数有5个参数:

    • image输入图像,传入时应该用中括号[]括起来
    • channels::传入图像的通道,如果是灰度图像,那就不用说了,只有一个通道,值为0,如果是彩色图像(有3个通道),那么值为0,1,2,中选择一个,对应着BGR各个通道。这个值也得用[]传入。
    • mask:掩膜图像。如果统计整幅图,那么为none。主要是如果要统计部分图的直方图,就得构造相应的炎掩膜来计算。
    • histSize:灰度级的个数,需要中括号,比如[256]
    • ranges:像素值的范围,通常[0,256],有的图像如果不是0-256,比如说你来回各种变换导致像素值负值、很大,则需要调整后才可以。

    除此之外,强大的numpy也有函数用于统计直方图的,通用的一个函数np.histogram,还有一个函数是np.bincount()(用于以为统计直方图,速度更快)。这三个方式的传入参数基本上差不多,不同的是opencv自带的需要中括号括起来。 
    对于直方图的显示也是比较简单的,直接plt.plot()就可以。一个实例如下:

     
    1. import cv2
      
      import numpy as np
      
      import matplotlib.pyplot as plt
      
      
      img = cv2.imread('flower.jpg',0) #直接读为灰度图像
      
      #opencv方法读取-cv2.calcHist(速度最快)
      
      #图像,通道[0]-灰度图,掩膜-无,灰度级,像素范围
      
      hist_cv = cv2.calcHist([img],[0],None,[256],[0,256])
      
      #numpy方法读取-np.histogram()
      
      hist_np,bins = np.histogram(img.ravel(),256,[0,256])
      
      #numpy的另一种方法读取-np.bincount()(速度=10倍法2)
      
      hist_np2 = np.bincount(img.ravel(),minlength=256)
      
      plt.subplot(221),plt.imshow(img,'gray')
      
      plt.subplot(222),plt.plot(hist_cv)
      
      plt.subplot(223),plt.plot(hist_np)
      
      plt.subplot(224),plt.plot(hist_np2)
      

       

    这里写图片描述

    现在来考虑opencv的直方图函数中掩膜的使用,这个掩膜就是一个区域大小,表示你接下来的直方图统计就是这个区域的像素统计。一个例子如下:

    import cv2
    
    import numpy as np
    
    import matplotlib.pyplot as plt
    
    img = cv2.imread('flower.jpg',0) #直接读为灰度图像
    
    mask = np.zeros(img.shape[:2],np.uint8)
    
    mask[100:200,100:200] = 255
    
    masked_img = cv2.bitwise_and(img,img,mask=mask)
    
    
    #opencv方法读取-cv2.calcHist(速度最快)
    
    #图像,通道[0]-灰度图,掩膜-无,灰度级,像素范围
    
    hist_full = cv2.calcHist([img],[0],None,[256],[0,256])
    
    hist_mask = cv2.calcHist([img],[0],mask,[256],[0,256])
    
    
    plt.subplot(221),plt.imshow(img,'gray')
    
    plt.subplot(222),plt.imshow(mask,'gray')
    
    plt.subplot(223),plt.imshow(masked_img,'gray')
    
    plt.subplot(224),plt.plot(hist_full),plt.plot(hist_mask)
    
    

    这里写图片描述

    (二)直方图均衡化

    图像的直方图是对图像对比度效果上的一种处理,旨在使得图像整体效果均匀,黑与白之间的各个像素级之间的点更均匀一点。 
    直方图均衡化只要包括三个步骤:

    1. 统计直方图中每个灰度级出现的次数;
    2. 计算累计归一化直方图;
    3. 重新计算像素点的像素值;

    关于原理的详细部分给一个参考:

    直方图均衡化原理

    百度百科的解释也很棒 
    http://baike.baidu.com/link?url=RUjahehgkTMDGKwAEyMsHyeMyWWTw9a0KUx2CzLbXtxdZyoF6zqDbJsfEffUQYAwvr7kD9p6cbOxJGYGk1nkZq

    在opencv有专门函数对直方图进行均衡化使用的函数就是cv2.equalizeHist().一个实例如:

     
    import cv2
    
    import matplotlib.pyplot as plt
    
    
    img = cv2.imread('flower.jpg',0) #直接读为灰度图像
    
    res = cv2.equalizeHist(img)
    
    
    plt.subplot(121),plt.imshow(img,'gray')
    
    plt.subplot(122),plt.imshow(res,'gray')
    
    

    这里写图片描述

    上述的直方图均衡化可以可能到是一种全局意义上的均衡化,但是有的时候这种操作并不是很好,会把某些不该调整的部分给调整了。Opencv中还有一种直方图均衡化,它是一种局部局部来的均衡化,也就是是说把整个图像分成许多小块(比如按10*10作为一个小块),那么对每个小块进行均衡化。这种方法主要对于图像直方图不是那么单一的(比如存在多峰情况)图像比较实用。Opencv中将这种方法称之为CLAHE,使用到的函数就是cv2.createCLAHE(),一个实例如下:

     

     

    import cv2
    
    import matplotlib.pyplot as plt
    
    
    img = cv2.imread('flower.jpg',0) #直接读为灰度图像
    
    clahe = cv2.createCLAHE(clipLimit=2,tileGridSize=(10,10))
    
    cl1 = clahe.apply(img)
    
    
    plt.subplot(121),plt.imshow(img,'gray')
    
    plt.subplot(122),plt.imshow(cl1,'gray')

    这里写图片描述
    可以看到,相对于全局的直方图均衡化,这个局部的均衡化似乎得到的效果更自然一点。

    展开全文
  • python级web框架 flask

    千次阅读 2019-10-13 20:36:39
    本文一些知识点来源于百度 文章目录一、flask介绍1.flask...Flask是一个使用 Python 编写的轻级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。 Flask也被称为 “mi...

    一、flask介绍


    1.flask的构成


    Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD授权。
    Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。


    2.使用flask框架的原因


    Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。


    3.flask的优点


    Flask旨在保持代码简洁且易于扩展,Flask框架的主要特征是核心构成比较简单,但具有很强的扩展性和兼容性,程序员可以使用Python语言快速实现一个网站或Web服务。一般情况下,它不会指定数据库和模板引擎等对象,用户可以根据需要自己选择各种数据库。Flask自身不会提供表单验证功能,在项目实施过程中可以自由配置,从而为应用程序开发提供数据库抽象层基础组件,支持进行表单数据合法性验证、文件上传处理、用户身份认证和数据库集成等功能。


    4.flask构成部分的介绍


    Flask主要包括Werkzeug和Jinja2两个核心函数库,它们分别负责业务处理和安全方面的功能,这些基础函数为web项目开发过程提供了丰富的基础组件。
    Werkzeug(负责业务处理)库十分强大,功能比较完善,支持URL路由请求集成,一次可以响应多个用户的访问请求;支持Cookie和会话管理,通过身份缓存数据建立长久连接关系,并提高用户访问速度;支持交互式Javascript调试,提高用户体验;可以处理HTTP基本事务,快速响应客户端推送过来的访问请求。
    Jinja2(安全方面)库支持自动HTML转移功能,能够很好控制外部黑客的脚本攻击。系统运行速度很快,页面加载过程会将源码进行编译形成python字节码,从而实现模板的高效运行;模板继承机制可以对模板内容进行修改和维护,为不同需求的用户提供相应的模板。


    5.flask特点


    目前,我国市场上大部分智能交通系统控制平台采用的都是C/S模式,对终端要求较高,且安装繁琐。部分的平台也有采用基于B/S模式传统框架,但这些框架的一些功能大多被固定,缺乏灵活性。采用Flask微型框架做服务器的后台开发,Flask是基于Python开发的框架,类似的框架还有Django、Tornado等,之所选择Flask来开发,原因如下:
    后续的基于机器学习的车辆检测与属性识别算法研究,主要开发语言也是应用Python,整个系统统一开发语言,便于开发和后期维护。
    Flask因为灵活、轻便且高效的特点被业界认可,同时拥有基于Werkzeug、Jinja2等一些开源库,拥有内置服务器和单元测试,适配RESTful,支持安全的cookies,而且官方文档完整,便于学习掌握。
    Flask中拥有灵活的Jinja2模板引擎,提高了前端代码的复用率。这样可以提高开发效率和有利于后期开发与维护。在现有标准中,Flask算是微小型框架。Flask有两个主要依赖:路由、调试和Web服务器网关接口(WebServerGatewayInterface,WSGI)子系统由Werkzeug提供;模板系统由Jinja2提供。Werkzeug和Jinja2都是由Flask的核心开发者开发而成。对于数据库访问、验证Web表单和用户身份认证等一系列功能,Flask框架是不支持的。这些功能都是以扩展组件的方式进行实现,然后再与Flask框架集成。开发者可以根据项目的需求进行相应的扩展,或者自行开发。这与大型框架恰恰相反,大型框架本身做出了大部分决定,难以灵活改变方案。


    6.flask的基本模式


    Flask的基本模式为在程序里将一个视图函数分配给一个URL,每当用户访问这个URL时,系统就会执行给该URL分配好的视图函数,获取函数的返回值并将其显示到浏览器上,其工作过程见图。
    在这里插入图片描述


    7.使用的flask版本


    使用flask==1.1.1


    8.flask提供了什么


    • flask只能够完成最简单的请求响应
    • jinja2 模板系统
    • werkzeug 工具箱(wsgi)
    • 插件

    二、开始flask旅程


    1. 创建虚拟环境


    新建一个文件夹,在里面打开cmd命令

    conda create -n FlaskPath python==3.5.2
    启动虚拟环境
    activate FlaskPath
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述


    2. 安装flask


    pip install flask==1.1.1
    

    安装版本小技巧:不知道安装哪个版本,可以查看已有版本号;例如:

    pip install flask==5  ## 后面的版本号尽量往大了写
    

    在这里插入图片描述
    给我们安装的包
    在这里插入图片描述


    3. 使用flask


    基本语法
    在这里插入图片描述
    在shell启动py文件进行查看

    python hello.py
    默认在5000端口
    

    在这里插入图片描述
    修改启动端口号为8000,开启debug模式
    在这里插入图片描述


    4. flask()参数


    flask的源文件
    在这里插入图片描述

    flask源文件参数含义
    import_name应用程序包的名称; Flask程序所在的目录,所在的包位置,传 name , 决定了 flask静态文件,模板文件的寻找地址
    static_url_path=Nonestatic路由地址,默认为空,可以修改为指定路由地址 ;可用于为web上的静态文件指定不同的路径。默认为static_folder文件夹的名称
    static_folder=“static”static目录名,默认为static,可以修改
    static_host添加静态路由时使用的主机。默认为None。在配置static_folder时使用host_matching=True是必需的
    host_matching设置url_map。host_matching属性。默认值为False
    subdomain_matching在匹配路由时,考虑相对于SERVER_NAME的子域。默认值为False
    template_folder包含应用程序应该使用的模板的文件夹。默认设置为应用程序根路径中的“templates”文件夹
    instance_path应用程序的另一个实例路径。默认情况下,包或模块旁边的文件夹‘instance’被认为是实例路径
    instance_relative_config如果将用于加载配置的相对文件名设置为True,则假定该配置相对于实例路径而不是应用程序根目录
    root_path默认情况下,Flask将自动计算到应用程序根目录的路径。在某些情况下,这是无法实现的(例如,如果包是python3命名空间包),需要手动定义。
    • import_name

      • Flask程序所在的目录,所在的包位置,传 name
      • 决定了 flask静态文件,模板文件的寻找地址
    • static_url_path

      • 静态文件的访问地址,可以不传,默认为 / + static_folder
        在这里插入图片描述
    • static_folder

      • 静态文件的目录,可以不传,默认为static
        在这里插入图片描述
    • template_folder

      • 模板文件的存储位置,可以不传,默认为 templates
        在这里插入图片描述

    5. 路由


    ① flask中的路由跟django中的路由的区别


    django中使用路由: urls.py path("/",视图)
    然后再在视图中写def index()

    flask路由 直接在py文件中 使用装饰器

    • @app.route(’/index/’)
    • def index():

    ② flask中路由的注意事项及路由的写法


    • 写路由 需要注意:
    1. url应该以/ 开头
    2. url写法 标准的是 / /
      在这里插入图片描述
    3. 视图函数不能重名
    4. 习惯: 将视图函数的名字命名为 路由的名字

    ③ 路由传参


    1. 转换器语法 <>

    <> 叫转换器语法 默认为string类型,

    • 路由中使用了
    • 视图中增加参数 username
    • 类型:
      • string 默认类型
      • int 整形
      • float
        在这里插入图片描述

    2. path: 包含斜杠的路径,通常用于路径的拼接

    在这里插入图片描述


    3. uuid:通用唯一识别码

    在这里插入图片描述
    路由后面传的参数id为:例如uuid4()所对应的一串

    uuid4随机数
    在这里插入图片描述


    ④ flask请求


    在django中

    django 
    ## 查看请求方式
    request.method
    ## 获取请求中的内容所对应的值
    request.GET.get()
    request.POST.get()
    

    1.flask get请求


    第一步:导包

    from flask import request
    

    默认支持get请求

    获取get请求的参数
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述


    2. flask post请求


    报错405,
    原因:没有给其增加请求方式

    在这里插入图片描述
    flask 默认不支持post请求
    解决:增加请求方式

    在这里插入图片描述
    获取post请求参数
    在这里插入图片描述
    如果要在一个视图函数中实现多个请求方式可以在请求方式中添加需要实现的请求
    在这里插入图片描述


    6. flask中request的一些方法


     from flask import request
    
    • 请求上下文
    request中的一些方法作用
    args获取get请求的参数
    form获取post请求的参数
    cookies获取cookie
    method获取请求方式 GET POST
    url获取请求url地址
    file获取请求上传的文件
    headers请求报文的头

    7. 静态文件


    django—》 配置settings中增加 static目录位置

    flask中使用静态文件

    在flask启动文件的同目录创建static目录,可以通过修改Flask参数修改 static目录
    在这里插入图片描述


    8. 模板(变量传递的方法)


    在脚本文件同级目录创建 templates目录,可以通过修改Flask参数改变模板文件的目录
    flask使用的 jinja2 的模板系统

    • 调用静态模板
      • render_template(“html”)
    • 传递数据
      • 变量的传递的第一种方法
        在这里插入图片描述
      • 变量传递第二种方法
        在这里插入图片描述
      • 变量传递第三种方法
        • **locals()
          在这里插入图片描述

    ① 模板语法


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <h1>我是templates</h1>
        <hr>
        <h2>变量的使用</h2>
        {{ name }} {{ age }}
        <hr>
        <h2>字符串处理方法</h2>
        {{ name.capitalize() }}
        <br>
        {{ name.upper() }}
        <br>
        {{ name.replace("e","###") }}
        <hr>
        {{ name.1 }} <!--取字符串中索引为1的第二个-->
        <br>
        {{ name + "再见" }}
        <br>
        {{ name.split("l") }}
        <hr>
        <h2>jinja2循环</h2>
        {% for one in name %}
            {{one}}<br>
        {% endfor%}
        <hr>
        <h2>jinja2判断</h2>
        {% if name == "hello"%}
            {{name}}
        {% else %}
            <span>没有名字</span>
        {% endif %}
        <hr>
        {{ mydict.get("yuwen") }}
        {{ mydict.shuxue }}
        {{ mydict['shuxue'] }}
        <br>
    {% for key,value in mydict.items() %}
        {{key}}:{{value}}
    {% endfor %}
        <img src="/static/lang.jpg" alt="">
    
    </body>
    </html>
    

    在这里插入图片描述


    9. 模板继承


    与django一样

    base.html
    
    	{% block title %}  {%endblock%}
    
    子页面
    
    	{% extends "base.html"%}
    
    	{% block title %} 子页面{%endblock%}
    
    
    
    base页面    提取公共部分 ,修改静态文件位置,增加block
    
    

    10. 启动配置项说明


    在这里插入图片描述

    启动配置项介绍
    host主机ip
    port端口号,默认5000
    debugdebug模式,True代表了开启debug模式,可显示错误,修改代码后自动重启项目

    展开全文
  • 使用一行Python代码从图像读取文本

    千次阅读 多人点赞 2020-01-10 13:12:59
    但不是所有情况都很好,有时候需要一些图像处理需要使文本高亮让其对于背景更加突出。 参考文献 https://opencv.org/about/ https://en.wikipedia.org/wiki/Tesseract_(software) 欢迎关注磐创博客...

    处理图像不是一项简单的任务。对你来说,作为一个人,很容易看着某样东西然后马上知道你在看什么。但电脑不是这样工作的。

    对你来说太难的任务,比如复杂的算术,或者一般意义上的数学,是计算机毫不费力就能完成的。但在这里,情况正好相反——对你来说很琐碎的任务,比如识别图像中的猫或狗,对电脑来说真的很难。在某种程度上,我们是天造地设的一对。至少现在是这样。

    虽然图像分类和涉及到一定程度计算机视觉的任务可能需要大量的代码和扎实的理解,但是从格式良好的图像中读取文本在Python中却是简单的,并且可以应用于许多现实生活中的问题。

    在今天的帖子中,我想证明这一点。虽然会安装一些库,但不会花很多时间。这些是你需要的库:

    • OpenCV
    • PyTesseract

    OpenCV

    现在,这个库将只用于加载图像,实际上你不需要事先对它有太多了解(尽管它可能有帮助,你将看到为什么)。

    根据官方文件:

    OpenCV(开源计算机视觉库)是一个开源的计算机视觉和机器学习软件库。OpenCV的目的是为计算机视觉应用提供一个通用的基础结构,并加速机器感知在商业产品中的使用。OpenCV是bsd许可的产品,OpenCV使企业可以轻松地使用和修改代码

    简而言之,你可以使用OpenCV来做任何类型的图像转换,这是一个相当简单的库。

    如果你还没有安装它,那么它将只是终端中的一行:

    pip install opencv-python
    

    差不多就是这样。在此之前,一切都很简单,但这种情况即将改变。

    PyTesseract

    这个库到底是什么东西?根据维基百科:

    Tesseract是用于各种操作系统的光学字符识别引擎。它是免费软件,根据Apache许可2.0版发布,自2006年以来由Google赞助开发。

    我敢肯定,现在有更多复杂的库可用,但是我发现这个库运行良好。根据我自己的经验,该库应该能够从任何图像中读取文本,但前提是该字体不会使你连连看都看不懂。

    如果无法从你的图像中读取文字,花更多的时间使用OpenCV,应用各种过滤器使文本高亮。

    现在安装在底部有些麻烦。如果你使用的是Linux,则全部归结为几个sudo-apt get命令:

    sudo apt-get update
    sudo apt-get install tesseract-ocr
    sudo apt-get install libtesseract-dev
    

    我用的是Windows系统,所以这个过程有点乏味。

    首先,打开这个URL:
    https://github.com/UB-Mannheim/tesseract/wiki
    下载32位或64位的安装程序:

    安装本身很简单,只需单击几次Next。是的,你还需要做一个pip安装:

    pip install pytesseract
    

    接下来要需要告诉Python Tesseract安装在何处。在Linux机器上,我不需要这样做,但在Windows上是必需的。默认情况下,它安装Program Files

    如果你做的一切正确,执行这些代码应该不会产生任何错误:

    获取文本

    让我们从一个简单的开始。我找到了一些免版税的图片,里面有一些文字,第一个是这样的:

    它应该是简单的一个,有可能Tesseract会读那些蓝色的“对象”作为括号。让我们看看会发生什么:

    我的猜测是正确的。不过,这不是一个问题,你可以使用一些Python技巧轻松地解决这些问题。

    下一个可能更棘手:

    我希望它不会检测到硬币上的“B”:

    看起来效果很好。

    现在轮到你把它应用到你自己的问题上了。如果文本与背景混合,OpenCV技能在这里可能是至关重要的。

    在你离开之前

    对计算机来说,从图像中读取文本是一项相当困难的任务。想想看,电脑不知道字母是什么,它只对数字有效。在引擎盖后面发生的事情一开始可能看起来像一个黑盒子,但我鼓励你进一步研究,如果这是你感兴趣的领域。

    我并不是说PyTesseract每次都能很好地工作,但是我发现即使在一些比较复杂的图像上它也足够好。但不是所有情况都很好,有时候需要一些图像处理需要使文本高亮让其相对于背景更加突出。

    参考文献

    1. https://opencv.org/about/
    2. https://en.wikipedia.org/wiki/Tesseract_(software)

    欢迎关注磐创博客资源汇总站:
    http://docs.panchuang.net/

    欢迎关注PyTorch官方中文教程站:
    http://pytorch.panchuang.net/

    OpenCV中文官方文档:
    http://woshicver.com/

    展开全文
  • Day14_Python图形化界面、tkinter、Python英汉词典 14.01Python语言基础(Python实现英汉字典)(掌握) 14.02Python语言基础(tkinter概述)(熟练) 14.03Python语言基础(创建一个图形化界面)(熟练) 14.04Python语言...
  • python学习方法总结(内附python全套学习资料)

    万次阅读 多人点赞 2019-10-29 16:50:38
    不要再问我python好不好学了 我之前做过半年少儿编程老师,一个小学四年级的小孩子都能在我的教学下独立完成python游戏,植物大战僵尸简单版,如果要肯花时间,接下来的网络开发也不是问题,人工智能也可以学个调包...
  • 爆肝六万字整理的python基础,快速入门python的首选

    万次阅读 多人点赞 2021-09-01 13:38:47
    Python基础大全 1 环境安装 学习python开发,首先要学会安装Python环境,我一般使用Anaconda+Pycharm作为开发环境。Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。因为包含...
  • Python 图形化界面设计

    千次阅读 2019-10-25 13:57:40
    1、图形化界面设计的基本理解 当前流行的计算机桌面应用程序大多数...Python自带了tkinter 模块,实质上是一种流行的面向对象的GUI工具包 TK 的Python编程接口,提供了快速便利地创建GUI应用程序的方法。其图像化编...
  • Python 根据本地时间获取 UTC 偏移

    千次阅读 2018-06-09 12:47:39
    在 so 上查了一下,可以用如下代码获取本地时间对于 UTC 时间的偏移,代码实现思路比较简单,分别获取本地时间和和 UTC 时间,然后本地时间减去 UTC 时间即可得到对于 UTC 的偏移小时,代码如下: #!/usr/bin...
  • 女友半夜加班发自拍 python男友用30行代码发现惊天秘密
  • 贝叶斯在概率学中,对于古典古典概率,引入了主观因素【对于未知的参数视为随机变量,而不是一个固定值,比如抛硬币】 参考知乎大神举得栗子: 举个例子:生病的几率 一种癌症,得了这个癌症的人被检测出为...
  • 如何在Python中生成图形和图表

    千次阅读 2019-04-19 13:06:42
    在本章中,我们将学习如何在Python中生成图形和图表,同时将使用函数和面向对象的方法来可视化数据。 Python中常用的一些可视化数据包括以下几种。 Matplotlib。 Seaborn。 ggplot。 Geoplotlib。 Bokeh。 Plotly。...
  • Python2和Python3的区别,以及为什么选Python3的原因

    万次阅读 多人点赞 2018-06-29 12:28:13
    Python官方建议学习Python 3只是一种一厢情愿的行为 我们来看一下Python 2和Python 3的下载统计数据(Python 2.7 still reigns supreme in pip installs): Python 2的使用远远超过Python 3。而且,大家注意竖轴的...
  • Python

    万次阅读 2017-09-23 14:38:03
    Python进阶(一)-初识Python数据元素:列表&元组   毕业论文已完成,下面就是等待盲审结果了。在此期间,已感觉论文无从看起。就学习一下Python吧,听说这是一门很神奇的语言。下面言归正传~    在线文档查询:...
  • 公众号后台回复“图书“,了解更多号主新书内容作者:刘早起来源:早起Python大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用panda...
  • Python绘图介绍

    千次阅读 2017-12-07 13:33:48
    Matplotlib是一个Python 2维绘图库,已经成为python中公认的数据可视化工具,通过Matplotlib你可以很轻松地画一些或简单或复杂地图形,几行代码即可生成线图、直方、功率谱、条形、错误、散点等等。...
  • 基于Python的人脸图像特征提取的分析设计 人脸识别是一个被广泛研究的热门问题,该技术在法律、商业、安全系统领域有着广泛的应用,人脸图像的易取性和人脸变化的多样性使该技术的研 究更富有挑战性。当前,基于模板...
  • python 数据结构五 之

    千次阅读 2017-08-25 19:16:18
    python数据结构教程第五课 在计算机的数据结构领域和课程里,被看作一类复杂...四、python实现 1.类的python实现 2.的遍历 五、的简单应用——最小生成树、最短路径问题 1.最小生成树解法 2.最短路径问题
  • 大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进行分析。 那么你知道如何使用Python读取Excel中的图片?又如何...
  • 这里给大家总结了一张系统的Python学习路线!希望大家共勉! Python是一种编程语言 完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行。用Python完成项目,编写的代码更少,代码...
  • python

    千次阅读 2018-01-29 16:25:06
    Python (计算机程序设计语言) 编辑 Python[1] (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开...
  • Python基础——Python语言家族

    万次阅读 多人点赞 2020-09-22 13:48:55
    一、Python语言家族 1 Introduction 1.1 Python 简介 Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 简单来说,Python是一门编程语言,帮助我们更好的与计算机沟通,功能全面、易学易用...
  • Python 按偏移读取文件内容

    千次阅读 2019-09-24 10:18:18
    python 文件操作seek() 和 telll() 自我解释 file.seek()方法格式: seek(offset,whence=0) 移动文件读取指针到制定位置 offset:开始的偏移,也就是代表需要移动偏移的字节数。 whence: 给offset参数一个定义...
  • Python 教你如何给图像分类

    千次阅读 2020-10-19 08:00:00
    文 |潮汐来源:Python 技术「ID: pythonall」在日常生活中总是有给图像分类的场景,比如垃圾分类、不同场景的图像分类等;今天的文章主要是基于图像识别场景进行模型构建。...
  • 最新 用Python 批量爬取网上图片

    千次阅读 2018-09-26 16:23:13
    人生苦短,我学Python
  • 写在前面:为啥不用excel绘制这些,用PoweBI,帆软BI等可视化软件来绘图,不是更方便吗?的确,这些工具都很方便,但同时,它们显得很呆,不够灵活,更为致命的是,它们绘制出的图形,分辨率不够,用来出版论文,...
  • 所有后面的对图像数据的操作都对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。 关键点描述:在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,...
  • python计算机视觉-图像检索和识别

    万次阅读 2021-06-06 17:11:49
    算法过程: 1)提取图像特征 2)对特征进行聚类,得到一部视觉字典( visual vocabulary ) 3)根据字典将图片表示成向量(直方) 4)把输入图片转化成视觉单词的频率直方 1)提取图像特征 特征提取及描述主要是将一些 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 114,579
精华内容 45,831
关键字:

python相量图

python 订阅