python中_python中的一些用法总结
用python寫了一個測試Demo,其中涉及到一些常用的用法,現在記錄在這里,方便后續查閱:
1 python中全局變量的使用:
全局變量在所有程序的外部進行定義,再函數內部使用的時候分為兩種情況,一種是只是使用全局變量的值,第二種是對全局變量進行的值進行修改,第一種情況下不會產生歧義,直接使用即可,第二種情況下則有可能會產生究竟是定義一個新變量還是對已有的全局變量的修改,因此需要加上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
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_Ytarget.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 = 100target.save(param + (filename.strip().split('/'))[-1] + '_merge.jpg', quality = quality_value)
總結
以上是生活随笔為你收集整理的python中_python中的一些用法总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux最全命令详解,请记下来!
- 下一篇: python sftp_python中实