Уведомления

Группа в Telegram: @pythonsu

#1 Март 13, 2013 10:13:03

mrgloom
От:
Зарегистрирован: 2010-07-22
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

список структур

написал такой код

def get_best_n(img_path, db_dir,n=10,types = ('*.jpg','*.tif','*.png')):
	os.chdir(db_dir)
	
	files_grabbed = []
	for files in types:
		files_grabbed.extend(glob.glob(files))
	
	hist_list=[]
	for names in files_grabbed:
		full_path= db_dir+'\\'+names
		src = cv.LoadImage(full_path, cv.CV_LOAD_IMAGE_COLOR)
		hist_list.append(compute_histogram_rgb(src))
	
	score_list=[]
	img= cv.LoadImage(img_path, cv.CV_LOAD_IMAGE_COLOR)
	hist= compute_histogram_rgb(img)
	for h in hist_list:
		score_list.append(cv.CompareHist(hist, h, cv.CV_COMP_CORREL))
	score_list.sort()
	return score_list

мне необходимо как то вместе соединить имена изображений из files_grabbed и score_list, т.е. получиться список структур(?), а потом отсортировать по score_list и взять первые n и вывести их имена.



___________________________________________________________________________________________
http://www.lfd.uci.edu/~gohlke/pythonlibs/
https://bitbucket.org/pypy/compatibility/wiki/Home

Отредактировано mrgloom (Март 13, 2013 10:13:34)

Офлайн

#2 Март 13, 2013 10:31:49

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

список структур

Достаточно использовать кортежи (tuple) то есть на выходе будет список:

[(score1, file1), (score2, file2), ..., (scoreN, fileN)]
его пропускаем через sort и откусываем n элементов.

Отредактировано s0rg (Март 13, 2013 10:33:09)

Офлайн

#3 Март 13, 2013 14:19:17

mrgloom
От:
Зарегистрирован: 2010-07-22
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

список структур

вроде бы dict как раз то что нужно, но непонятно как его сортировать
http://docs.python.org/2/library/stdtypes.html#dict

а как работать с tuple я так и не понял.

т.е. мне тупо нужно что то типа вектора со структурой на 2 ячейки и чтобы можно было добавлять\удалять\получать доступ по индексу\сортировать по одной из ячеек.

ну на самом деле хватит добавлять\сортировать по одной из ячеек, остальное только для удобства.



___________________________________________________________________________________________
http://www.lfd.uci.edu/~gohlke/pythonlibs/
https://bitbucket.org/pypy/compatibility/wiki/Home

Офлайн

#4 Март 13, 2013 14:25:37

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

список структур

mrgloom
вроде бы dict как раз то что нужно, но непонятно как его сортироватьhttp://docs.python.org/2/library/stdtypes.html#dictа как работать с tuple я так и не понял.т.е. мне тупо нужно что то типа вектора со структурой на 2 ячейки и чтобы можно было добавлять\удалять\получать доступ по индексу\сортировать по одной из ячеек.ну на самом деле хватит добавлять\сортировать по одной из ячеек, остальное только для удобства.
Именно это я вам и предложил, поясняю примером:
from operator import itemgetter
list1 = ['a', 'b', 'c']
list2 = [3, 2, 1]
list3 = zip(list2, list1)
print list3
print sorted(list3, key=itemgetter(0))

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version