эффективная структура данных для хранения нескольких изображений в python

Что было бы хорошим способом хранить несколько изображений, загруженных с помощью OpenCV в Python? В С++ это можно просто сделать, используя вектор Мата.

Как это сделать на Питоне? Встроенные массивы AFAIK подходят только для простых данных. Должен ли я использовать какой-то вектор или что-то вроде этой библиотеки?


person Luis Cavalheiro    schedule 11.02.2013    source источник
comment
вектор C++ и список python очень похожи.   -  person BostonJohn    schedule 12.02.2013
comment
@BostonJohn: вектор C++ хранит копии своих элементов, список Python хранит ссылки.   -  person Dietrich Epp    schedule 12.02.2013


Ответы (2)


Когда я работаю с OpenCV, я предпочитаю использовать numpy ndarrays. Это быстрое и простое преобразование между массивами numpy и классами OpenCV Image/Matrix, требуется только тонкая оболочка, а numpy предоставляет вам массу числовых трюков и библиотек для использования.

При этом не будет ничего плохого в том, чтобы просто использовать списки собственного класса iplimage cv (структура, унаследованная от библиотеки обработки изображений Intel).

person wim    schedule 12.02.2013

Я не уверен, что вы спрашиваете. Что было бы не так с созданием указанного пользователем объекта Image следующим образом:

from opencv.cv import *
class Image:
    def __init__(self, file):
        image = cvLoadImage (file)
        # whatever else you may need to store or do


list = []
someImg = Image("C:/somefile.png")
list.append(someImg)

а затем сохранить их в списке? Вот как бы я поступил в вашей ситуации, но я могу неправильно истолковать специфику вашего вопроса.

Редактировать: я также не использовал OpenCV в python, поэтому я не уверен, как работает импорт и создание изображений, но похоже, что-то вроде этого. Ссылка: здесь или здесь

Кроме того, numpy.ndarray является хорошим, поскольку вы, кажется, имеете в виду использование вектора (здесь список python) матриц (здесь numpy.ndarrays), с которым вам может быть удобнее.

person chase    schedule 11.02.2013