Python学习笔记(六)

代码问题主要出自《Python 计算机视觉编程》

第一章

加载数据包问题


import time

from matplotlib.pylab import *

注释掉的是一种组合加载方式,否则,就会报错。当然time只使用了一次,所以就直接加载time。而pylab使用很多,就写成 from matplotlib.pylab import *

这两个为啥会冲突呢? o(≧口≦)o!!

这个文章最后的推测我觉得很有道理。保持命名空间的方法,虽然繁琐,但是能够保证函数调用的单一指向,尤其能规避不同库中存在重名函数,导致调用出现偏移的情况。

第二章

需要使用PCV库里的函数,版本有问题,一直报错。其实可以换个思路,将需要的函数复制到我们的文件中,就不许要在import该文件了。

sift.exe调用问题

在需要调用外部可执行程序时,sift.exe调用完返回的文件时空的。所以后边读取时会报溢出错误。如下:

Python学习笔记(六)
找到这片博客sift为空说是版本问题下下来试一下。

这个网站下载历史版本https://www.vlfeat.org/download/
我下了一个0.9.17版的试一下。
问题解决了!!! 乁( ˙ ω˙乁)

对桌同学出现了个问题,他系统使用的是位的,但是要下载32位的才能正常运行。

最近发现可能是路径斜杠的问题,我从电脑直接拷贝的路径为”D:\python\exercise_data\ComputerVision\ch02″
程序中 “\” 有转义字符的意思,还有系统更新部分会不会也有影响??对于路径斜杠的改变?
我改变路径斜杠就可以了,之前潜意识认为是相同的。

; matplotlib打印title时正常显示中文

我打印图片时,中文title显示为方块。

import matplotlib.font_manager as fm

myfont=fm.FontProperties(fname='C:\Windows\Fonts\simsun.ttc')

在文件最开始加上这两句,之后再在 title()函数中加上参数 fontproperties=myfont
如下:

title(' Harris 角点',fontproperties=myfont)

就能正常显示中文了! \(@^0^@)/

Python学习笔记(六)

调用pydot时出现问题。

按照这个文章 匹配地理标记图像说的,操作之后,程序会报 [WinError 5] 错误。

问题定位到了这里

g.write_png(r'C:/hqq/document/python/computervision/ch02/test1.png')

网上说是要加完整的路径,但是我加了也是报错。

解决这个问题的关键在与:

for i in range(nbr_images):
        for j in range(i + 1, nbr_images):
            if matchscores[i, j] > threshold:

                im = Image.open(imlist[i])
                im.thumbnail((100, 100))
                filename = graphpath +str(i) + '.png'
                im.save(filename)
                g.add_node(pydot.Node(str(i), fontcolor='transparent', shape='rectangle', image= filename))

                im = Image.open(imlist[j])
                im.thumbnail((100, 100))
                filename = graphpath + str(j) + '.png'
                im.save(filename)
                g.add_node(pydot.Node(str(j), fontcolor='transparent', shape='rectangle', image= filename))
                g.add_edge(pydot.Edge(str(i), str(j)))
        g.write_png(r'test1.png')

上面代码中的save将图片存哪里了。

程序执行大致是这样的,我们程序调用了pydot.py库,使用了里面的函数。库里面的函数会去调用dot.exe这个可执行文件。dot.exe这个文件的地址在pydot.py中是有个默认值的,如果我们不去修改那就调用不到所以就会报错。

怎么修改呢?很简单,我们在运行这个程序之前是要先安装一下graphviz这个工具的。之后pydot.py调用的dot.exe就是这个工具带的。所以我们要把pydot.py中调用函数地址的默认值,设定为这个graphviz工具带的dot.exe的完整路径设。

Python学习笔记(六)
这是要修改的第一个位置。
还有一个也不能说是修改,是要注意的是图片的路径选择
Python学习笔记(六)
我是在红色和绿色两个框,框起来的 ” image = filename ” 犯错了。我多加了一个graphpath上去写成了 ” image = graphpath + filename “,由于图片的存储位置不对,所以不报错,但输出一种是空的几个举证,没有图片。

我隐约感觉,如果程序在调用外部可执行文件时,关注点应该都是再那个被调用的可执行文件的地址,他是再什么时候,在哪里传递给程序的,这是关键。

python 对矩阵数据的存取

调试代码的时候,就是上面的pydot 匹配地理标记图像时遇到的。需要将匹配好的关系矩阵传递给打印图像的函数中去,这个矩阵能顺利输出,但是打印出现问题了。所以调试的时候很痛苦,就想着将矩阵保存,到时候直接读取,就能省时间。
如何实现呢?

import numpy as np
np.savetxt('data.txt',array)
dataset = np.loadtxt('data.txt')

这里数据时float型的所以有点小问题。

float这样搞:

with open(datapath, 'r') as f:

        numFeat = len(open(datapath).readline().split(','))
        for line in f.readlines():
            lineArr =[]
            curLine = line.strip().split(',')
            for i in range(numFeat):
                lineArr.append(float(curLine[i]))
            matchscores.append(lineArr)
    matchscores = array(matchscores)

就可以了。╰(°▽°)╯😊╰(°▽°)╯

savetxt(r'matchscoers.txt',matchscores,delimiter=',')

我存的时候定义的分割符是逗号,所以再切割文件时以”,”为切割标记。

Original: https://blog.csdn.net/qq_35021992/article/details/126942460
Author: 书生丶丶
Title: Python学习笔记(六)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/769422/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • (学习flask) 02 Jinja2模板引擎

    模板 模板是一个包含响应文本的文件,其中包含用占位变量表示的动态部分,其具体值只会在请求上下文中才能被具体赋值。 Jinja2模板引擎 定义index.html和user.html…

    Python 2023年8月12日
    032
  • 6.1-Django入门

    安装依赖包 pip install django==2.0.1 -i https://mirrors.ailiyun.com/pypi/simple 进入”终端&#82…

    Python 2023年8月6日
    047
  • 命令行中输出的Python版本与当前Conda环境中的Python版本不一致

    记录一下遇到的一个奇怪的小问题。 为了完成导师布置的情感对话的项目,我从github上找了一个模型,然后按照readme在服务器上配置好环境python2.7+tensorflow…

    Python 2023年9月9日
    0110
  • python-容器序列类型

    点击标题进行跳转 容器序列类型 列表是有序集合,无定长,能存储任意数量和类型的数据,语法为: [元素1, 元&am…

    Python 2023年5月24日
    071
  • Go语言学习——结构体与JSON

    结构体与JSON JSON 教程:https://www.runoob.com/json/json-tutorial.html 什么是 JSON ? JSON 指的是 JavaSc…

    Python 2023年6月10日
    038
  • 一道编程劝退题,检测你是否适合干编程

    大家都知道要想成为一名优秀的开发工程师,需要数学基础好,即你要有很强的逻辑思维能力,这里有一道美国斯坦福大学出的一道逻辑思维的测试题,检测你的逻辑思维能力,大家可以看看自己逻辑能力…

    Python 2023年11月5日
    032
  • 数据结构与算法系列一之整数、数组及字符串

    前言:由于本人不是科班出身,计算机基础相对薄弱一些,最近在工作之余想系统的学习一下数据结构与算法,主要是通过学习专项突破版的剑指Offer每一部分的典型题目,将每一部分相关的基础内…

    Python 2023年10月22日
    030
  • 迷宫最短路径算法(Sample algorithm)

    Sample algorithm 算法介绍 * 英文介绍 我的翻译 寻路结果图 演示代码 GIF动画演示 maze.py 参考 算法介绍 英文介绍 This is a fairly…

    Python 2023年9月24日
    045
  • 2.pytest之用例的运行方式

    pytest之用例的运行方式 主函数模式 命令行模式 配置文件 1.主函数模式 运行所有: pytest.main() 指定模块运行: pytest.main([&#x20…

    Python 2023年9月11日
    048
  • Django开发框架详细入门教程之实现接口并测试

    本文将介绍django框架的基本入门使用,下载安装,及实现一个简单的get请求接口和post请求接口,及利用postman和apipost工具进行测试。 一、django介绍 前段…

    Python 2023年8月13日
    065
  • one-hot编码

    one-hot编码 什么是one-hot编码 one-hot编码,又称独热编码、一位有效编码。其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任…

    Python 2023年8月1日
    064
  • windows使用conda命令安装tensorflow-gpu,并查看程序是否调用GPU

    前言 在进行深度学习训练时,会经常使用tensorflow搭建网络,下面详细介绍如何使用Anaconda搭建环境,以及在pycharm中调用环境,查看是否使用GPU进行训练。 &a…

    Python 2023年9月7日
    093
  • 初学Django:第十一天,shell工具的使用

    向数据库插入测试数据: insert into bookinfo(name, pub_date, readcount,commentcount, is_delete) values…

    Python 2023年8月5日
    056
  • CTFSHOW菜狗杯 web

    文章目录 * – web签到 – web2 c0me_t0_s1gn – 我的眼里只有$ – 抽老婆 – 一言既出 &#…

    Python 2023年8月15日
    041
  • 物联网协议概述

    目录 前言 内容 CoAP(Constrained Application Protocol 受限应用协议) MQTT(Message Queuing Telemetry Tran…

    Python 2023年10月10日
    031
  • Python从键盘获取输入

    之前做测试笔试的时候有很长一段时间不清楚怎么从键盘获取多个值的输入,终于一时兴起将各种情况下获取输入数值的方法进行了归纳,希望对刚好看到的您有帮助。 需要注意:input()返回的…

    Python 2023年8月2日
    046
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球