用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. MyBatis XML转义字符

    当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,>=等符号,但是很容易引起xml格式的错误,这样会导致后台将xml字符串转换为xml文档时报错,从而导致程序 ...

  2. Java知多少(上)

    Java知多少(1)语言概述 Java知多少(2)虚拟机(JVM)以及跨平台原理 Java知多少(3) 就业方向 Java知多少(4)J2SE.J2EE.J2ME的区别 Java知多少(5) Java ...

  3. HttpWebRequest - Asynchronous Programming Model/Task.Factory.FromAsyc

    Posted by Shiv Kumar on 23rd February, 2011 The Asynchronous Programming Model (or APM) has been aro ...

  4. maven 打包报错(增加调试信息)

    eclipse配置debug详细信息 如下图:

  5. session一直报错Session store not set on request

    Route::group(['middleware' => ['web']], function () { //});仍然报错,看了 session是使用默认file,没问题:app/stora ...

  6. [Object Tracking] Contour Detection through Tensorflow running on smartphone

    From: 手机端运行卷积神经网络的一次实践 -- 基于 TensorFlow 和 OpenCV 实现文档检测功能 貌似不错的东西:移动端视觉识别模型:MobileNets Holistically- ...

  7. [Localization] R-CNN series for Localization and Detection

    CS231n Winter 2016: Lecture 8 : Localization and Detection CS231n Winter 2017: Lecture 11: Detection ...

  8. Android图片管理组件(双缓存+异步加载)

    转自:http://www.oschina.net/code/snippet_219356_18887?p=3#comments ImageManager2这个类具有异步从网络下载图片,从sd读取本地 ...

  9. linux远程安装和使用

    Putty:一个Telnet.SSH.rlogin.纯TCP以及串行接口连接软件,体积小.完全免费.使用方便快捷,基本的功能都有.有点不好的地方:在一界面上一次只能打开一个窗口,对于快速查看和操作不太 ...

  10. day11 十一、函数对象,名称空间,作用域,和闭包

    一.函数对象 1.函数对象:函数名存放的就是函数的地址,所以函数名也是对象,称之为函数对象 a = 10 print(a,id(a)) def fn(): num = 10 print('fn fuc ...