Как получить изображение opencv в пространстве enaml - возможно ли это?

Можно ли использовать enaml в качестве цели для OpenCV?

Я думаю, как настроить графический интерфейс и что использовать. Ничего слишком сложного, мне нужно иметь возможность установить некоторый растровый фон, нарисовать прямоугольники и круги над ним, а также иметь возможность выбирать / перемещать эти графические объекты.

Кроме того, я хотел бы, чтобы мне не приходилось заботиться обо всех этих элементах, когда я растягиваю окно и т. Д. Они должны делать это автоматически, поскольку они будут определены в некотором "абсолютном" пространстве. Я думаю, я мог бы легко заставить это работать для растровых изображений (даже из памяти), переопределяя request_image в объекте ImageProvider (даже при том, что я вижу некоторый странный кеш, происходящий в представлении провайдера /enaml).

Проблема, с которой я столкнулся в OpenCV (OSX 64), заключается в том, что даже когда я получаю изменение размера для работы с qt backend и CV_WINDOW_NORMAL, содержимое не растягивается. Мне нравится OpenCV, потому что я легко получаю основные функции пользовательского интерфейса.

С другой стороны, я начал любить enaml, так что я думаю, кому-нибудь удалось заставить их работать вместе. Я думаю, что если связь с MPL работает, возможно, что соединение с OpenCV должно быть возможным:)

Спасибо!

2 ответа

Это должно сделать это:

from enaml.image import Image
from cv2 import imread, imencode

open_cv_image = imread('./cat.png')
png_image = imencode('.png', open_cv_image)[1].tostring()
enaml_image = Image(data=png_image)

Если вы можете получить ваше изображение в формате argb32 или png, вы можете использовать Enaml ImageView для его отображения.

Посмотрите на пример ImageView: https://github.com/nucleic/enaml/blob/master/examples/widgets/image_view.enaml

Другие вопросы по тегам