python中的一些用法总结
用python写了一个测试Demo,其中涉及到一些常用的用法,现在记录在这里,方便后续查阅:
1 python中全局变量的使用:
引用全局变量,不需要golbal声明,修改全局变量,需要使用global声明,特别地,列表、字典等如果只是修改其中元素的值,可以直接使用全局变量,不需要global声明。
全局变量在所有程序的外部进行定义,再函数内部使用的时候分为两种情况,一种是只是使用全局变量的值,第二种是对全局变量进行的值进行修改,第一种情况下不会产生歧义,直接使用即可,第二种情况下则有可能会产生究竟是定义一个新变量还是对已有的全局变量的修改,因此需要加上global声明。如上所述,列表,字典等,如果只是修改其中元素的值,则不需要声明,直接引用即可。
2 字典按照key进行逆序排序,
排序后的返回值是一个list,而原字典中的名值对被转换为了list中的元组,按照value排序只需要将lambda后面的索引换位[1]即可:
sort_sim = sorted(DICT_SIM.items(), key = lambda DICT_SIM:DICT_SIM[0], reverse = True)
3 numpy计算两个向量之间的cos距离
feat_vector = net.blobs['color_pool4/3x3_s2'].data[0]
#print 'feat_vector is ', feat_vector
feat_list = feat_vector.tolist()
np_probe_feat = np.array(feat_list)
vec1 = np_probe_feat.astype('float64')
#print 'vec1 is ', vec1
for key in DICT_FEAT.keys():
#print 'DICT_FEAT.keys() is ', DICT_FEAT[key]
vec2 = DICT_FEAT[key].astype('float64')
#print 'vec2 is ', vec2
dis = np.dot(vec1,vec2) / (np.linalg.norm(vec1)*np.linalg.norm(vec2))
4 string的list转为float型的向量,用于从文件中读取变量到vector
while True:
line = f_feat.readline()
if line:
image_name = line[: -1]
image_feat = f_feat.readline()[1:-2]
image_feat = image_feat.strip().split(',')
image_feat = map(eval, image_feat)
array_feat = np.array(image_feat)
#print 'array_feat is ', array_feat
#save the image name and its feat into the global dict
DICT_FEAT[image_name] = array_feat #no same key, so make no if else
5 PIL类型的image与cv类型的image相互转换
详见 http://www.mamicode.com/info-detail-1777172.html
http://blog.csdn.net/dcrmg/article/details/78147219
import cv2
from PIL import Image
import numpy image = Image.open("plane.jpg")
image.show()
img = cv2.cvtColor(numpy.asarray(image), cv2.COLOR_RGB2BGR)
cv2.imshow("OpenCV", img)
cv2.waitKey()
import cv2
from PIL import Image
import numpy img = cv2.imread("plane.jpg")
cv2.imshow("OpenCV", img)
image = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
image.show()
cv2.waitKey()
prob = Image.open(filename)
cv2_prob = cv2.cvtColor(np.asarray(prob), cv2.COLOR_RGB2BGR)
prob_constant = cv2.copyMakeBorder(cv2_prob, 10, 10, 10, 10, cv2.BORDER_CONSTANT, value=BORDER_COLOR) #opecv中的补边操作
prob_PIL = Image.fromarray(cv2.cvtColor(prob_constant, cv2.COLOR_BGR2RGB))
prob_resize = prob_PIL.resize((int(UNIT_SIZE_w), int(UNIT_SIZE_H)), Image.ANTIALIAS) 6 将一个向量写到txt文件中,我是先将其转为了list,然后将list强转为string,然后写入到文件中:
feat_vector = net.blobs['color_pool4/3x3_s2'].data[0]
feat_list = feat_vector.tolist()
wf.write(str(feat_list)) 7 利用PIL库将多张小图组合成一张大图:
def pinjie(images, prob, filename, param):
target = Image.new('RGB', (UNIT_SIZE_w * (NUM_X + 1), UNIT_SIZE_H * NUM_Y))
target.paste(prob[0], (UNIT_SIZE_w * NUM_X, 0, UNIT_SIZE_w * (NUM_X + 1), UNIT_SIZE_H))
for i in range(NUM_Y):
leftup_x = 0
leftup_y = UNIT_SIZE_H * i
rightdown_x = UNIT_SIZE_w
rightdown_y = UNIT_SIZE_H * (i + 1)
for j in range(NUM_X):
count = j + i * NUM_Y
target.paste(images[count], (leftup_x, leftup_y, rightdown_x, rightdown_y))
leftup_x = leftup_x + UNIT_SIZE_w
rightdown_x = rightdown_x + UNIT_SIZE_w
quality_value = 100
target.save(param + (filename.strip().split('/'))[-1] + '_merge.jpg', quality = quality_value)
python中的一些用法总结的更多相关文章
- python 中del 的用法
python中的del用法比较特殊,新手学习往往产生误解,弄清del的用法,可以帮助深入理解python的内存方面的问题. python的del不同于C的free和C++的delete. 由于pyth ...
- python中argparse模块用法实例详解
python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...
- 【313】python 中 print 函数用法总结
参考:python 中 print 函数用法总结 参考:Python print() 函数(菜鸟教程) 参考:Python 3 print 函数用法总结 目录: 字符串和数值类型 变量 格式化输出 p ...
- python中MySQLdb模块用法实例
篇文章主要介绍了python中MySQLdb模块用法,以实例形式详细讲述了MySQLdb模块针对MySQL数据库的各种常见操作方法,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了python中 ...
- python中hashlib模块用法示例
python中hashlib模块用法示例 我们以前介绍过一篇Python加密的文章:Python 加密的实例详解.今天我们看看python中hashlib模块用法示例,具体如下. hashlib ha ...
- Python Deque 模块使用详解,python中yield的用法详解
Deque模块是Python标准库collections中的一项. 它提供了两端都可以操作的序列, 这意味着, 你可以在序列前后都执行添加或删除. https://blog.csdn.net/qq_3 ...
- Python中super的用法【转载】
Python中super的用法[转载] 转载dxk_093812 最后发布于2019-02-17 20:12:18 阅读数 1143 收藏 展开 转载自 Python面向对象中super用法与MRO ...
- Python中With的用法
在看Dive Into Python中有关描述文件读写那章节的时候,看到了有关with的用法,查阅下相关资料,记录下来,以备后用. 官方的reference上有关with statement是这样说的 ...
- Python中AND-OR的用法
学习Python中的lambda函数的时候,才发现原来Python中的AND和OR还可以有一些别的用法.Python中的布尔逻辑计算的结果并非返回布尔值,而是返回它们相互之间的某一个.文章的部分例子来 ...
- python中的有趣用法
本文给除了python中几个有趣的用法,可以给我们不一样的启发 1: Python中模拟使用C++ 中的 cout << import sys class ostream: def ...
随机推荐
- 第三百九十五节,Django+Xadmin打造上线标准的在线教育平台—Xadmin集成富文本框
第三百九十五节,Django+Xadmin打造上线标准的在线教育平台—Xadmin集成富文本框 首先安装DjangoUeditor3模块 Ueditor HTML编辑器是百度开源的HTML编辑器 下载 ...
- linux安装中文输入法
CentOS英文系统安装中文输入法,简单说说在CentOS 6.3下用yum安装中文输入法的过程. 1.需要root权限,所以要用root登录 ,或su root 2.yum install &q ...
- windows命令行(DOS批处理)添加任务计划
自动创建每周运行一次的计划任务 创建计划任务可用at,schtasks命令,schtasks提供了很多参数 命令schtasks SCHTASKS /Create [/S system [/U use ...
- 使用kill -9 进程ID杀死jps中进程
- 转载:深入理解Scala的隐式转换系统
摘要: 通过隐式转换,程序员可以在编写Scala程序时故意漏掉一些信息,让编译器去尝试在编译期间自动推导出这些信息来,这种特性可以极大的减少代码量,忽略那些冗长,过于细节的代码. 使用方式: 1. ...
- linux-Centos 7下tftp-server服务的安装与配置
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间 进行简单文件传输的协议,提供不复杂.开销不大的文件传输服 ...
- 还不错的MUI技术文档
https://blog.csdn.net/xin724/article/details/81939176
- 10.8Xadmin url注册
2018-10-8 16:45:31 这两天在弄我的服务器,就是是看各种教程 死活部署不好我的Django项目 博客网站 过几天再弄! 越努力,越幸运!永远不要高估自己! 通过两个方法,通过类变量找到 ...
- 利用profiler工具提高NC-Verilog仿真效率
大家进行芯片验证时,一般都会遇到仿真速度很慢.效率不高的问题.目前发现了一个方法可以debug上述问题.即,利用NC的profiler工具. 关于profiler工具,我把文档<Cadence® ...
- python中的细节
# 1 # li = ['a', 'b', 'c', 'd','e'] # print(li[10:]) #[] 不报错 # 2 # 这不是True或False,而是值 # 另外,优先级 not &g ...