用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中的一些用法总结的更多相关文章

  1. python 中del 的用法

    python中的del用法比较特殊,新手学习往往产生误解,弄清del的用法,可以帮助深入理解python的内存方面的问题. python的del不同于C的free和C++的delete. 由于pyth ...

  2. python中argparse模块用法实例详解

    python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...

  3. 【313】python 中 print 函数用法总结

    参考:python 中 print 函数用法总结 参考:Python print() 函数(菜鸟教程) 参考:Python 3 print 函数用法总结 目录: 字符串和数值类型 变量 格式化输出 p ...

  4. python中MySQLdb模块用法实例

    篇文章主要介绍了python中MySQLdb模块用法,以实例形式详细讲述了MySQLdb模块针对MySQL数据库的各种常见操作方法,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了python中 ...

  5. python中hashlib模块用法示例

    python中hashlib模块用法示例 我们以前介绍过一篇Python加密的文章:Python 加密的实例详解.今天我们看看python中hashlib模块用法示例,具体如下. hashlib ha ...

  6. Python Deque 模块使用详解,python中yield的用法详解

    Deque模块是Python标准库collections中的一项. 它提供了两端都可以操作的序列, 这意味着, 你可以在序列前后都执行添加或删除. https://blog.csdn.net/qq_3 ...

  7. Python中super的用法【转载】

    Python中super的用法[转载] 转载dxk_093812 最后发布于2019-02-17 20:12:18 阅读数 1143  收藏 展开 转载自 Python面向对象中super用法与MRO ...

  8. Python中With的用法

    在看Dive Into Python中有关描述文件读写那章节的时候,看到了有关with的用法,查阅下相关资料,记录下来,以备后用. 官方的reference上有关with statement是这样说的 ...

  9. Python中AND-OR的用法

    学习Python中的lambda函数的时候,才发现原来Python中的AND和OR还可以有一些别的用法.Python中的布尔逻辑计算的结果并非返回布尔值,而是返回它们相互之间的某一个.文章的部分例子来 ...

  10. python中的有趣用法

    本文给除了python中几个有趣的用法,可以给我们不一样的启发 1: Python中模拟使用C++ 中的   cout << import sys  class ostream: def  ...

随机推荐

  1. Java知多少(104)网络编程之统一资源定位符URL

    统一资源定位符URL(Uniform Resource Locator)是www客户机访问Internet时用来标识资源的名字和地址.超文本链路由统一资源定位符URL维持.URL的格式是: <M ...

  2. python初级 1 数据类型和变量

    一.整数(int) 例:  0 1 2 3 -1 -2 –3 In [31]: print(type(0)) <class 'int'> In [32]: print(type(1)) & ...

  3. Linux软件安装中RPM与YUM 区别和联系

    .tc-nav-row{ height:38px; margin: 8px 15px; } .tc-nav-tab{ text-align: center; color:#333333; line-h ...

  4. Docker 基本指令整理(一)

    安装Docker yum install docker 1   1 yum install docker 开机自启动 -- centos 6 service docker start chkconfi ...

  5. Android图片处理(Matrix,ColorMatrix)

    转发说明:原文链接http://www.cnblogs.com/leon19870907/articles/1978065.html 在编程中有时候需要对图片做特殊的处理,比如将图片做出黑白的,或者老 ...

  6. json 字符串包含数组转换为object对象是报异常java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to

    前台传到后台的json字符串 前台实现这种格式json字符串方式: function contentFun(){ respType = respTypeFun(); return "{\&q ...

  7. flume 1.8 安装部署

    环境 centos:7.2 JDK:1.8 Flume:1.8 一.Flume 安装 1)        下载 wget http://mirrors.tuna.tsinghua.edu.cn/apa ...

  8. 【代码审计】YzmCMS_PHP_v3.6 代码执行漏洞分析

      0x00 环境准备 YzmCMS官网:http://www.yzmcms.com/ 程序源码下载:http://pan.baidu.com/s/1pKA4u99 测试网站首页: 0x01 代码分析 ...

  9. Mysql之一二

    1.limit用来限制select语句返回指定的记录数,可以接受一个或者两个数字参数.如果参数为一个,是返回的数据条数:如果给定参数为两个,第一个参数为指定第一个返回记录行的偏移量(初识记录行的偏移量 ...

  10. .Net Core 部署到Ubuntu 16.04 中的步骤

    需要安装的工具 .Net Core Nginx反向代理服务器(相当于Windows下的IIS) Supervisor(进程管理工具) .Net Core安装方法请参阅 官方文档 安装完成后就可以在项目 ...