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 ...
随机推荐
- Git 目录
linux通过用户名.密码提交的方式搭建私有git服务端 centos 6.5 6.6 6.7安装gitlab教程(社区版) Git 初始化项目.创建合并分支.回滚等常用方法总结 Git 错误集锦
- 牛客网_Go语言相关练习_判断&选择题(5)
一.判断题 defer应该在if后面,如果文件为空,close会崩溃. package main import ( "os" "fmt" ) func main ...
- 多线程开发之二 NSOperation
效果如下: ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UITableViewControll ...
- dedecms调用日期格式化形式大全
dedecms特有常用的日期格式化函数MyDate() 代码:[field:pubdate function="MyDate('Y-m-d',@me)" /] 样式:2013-08 ...
- 试一下Markdown
Markdown 没想到博客园居然能够有markdown这样的写法了,以前觉得有自定义CSS已经非常不错了,现在居然加入Markdown,太值得称赞了.国内的博客系统,应该首屈一指了. 强调 你要走, ...
- 腾讯云极速配置NodeJS+LNMP运行环境
版权声明:本文由吴逸翔原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/848754001487150669 来源:腾云阁 h ...
- Hyper-V、Esxi虚机还原,远程重启(关机)
/// <summary> /// 还原虚拟机 /// </summary> /// <param name="RDPID"></para ...
- 4、css盒模型和文本溢出
4:css盒模型和文本溢出 学习目标 1.认识盒子模型 2.盒子模型的组成部分 3.学习盒子模型的相关元素 margin padding 4.文本溢出相关的属性 一.css属性和属性值的定义 盒模型是 ...
- MFC 应用程序中使用管道代码示意
STARTUPINFO sinf = {0}; PROCESS_INFORMATION pinf = {0}; SECURITY_ATTRIBUTES sa = {0}; HANDLE hPipeOR ...
- easyui datagrid 弹出页面会出现两个上下滚动条处理办法!
同事推荐将datagrid上加一个toolbar 将上面的工具元素加上就可以了 toolbar: '#divListToolbar',