如何在enaml空间中获取opencv图像 - 这可能吗?

时间:2013-11-06 23:56:44

标签: macos qt opencv canopy enaml

是否可以将enaml作为OpenCV的目标?

我正在考虑如何设置GUI以及使用什么。 没有什么太复杂,我需要能够设置一些位图背景,在它上面绘制矩形和圆圈,但也有可能选择/移动这些图形对象。

另外,我希望在拉伸窗口等时不需要处理所有这些元素。他们应该自动执行此操作,因为它们将在某些“绝对”空间中定义。我认为通过覆盖ImageProvider对象中的request_image,我可以很容易地使它适用于位图(甚至是内存)(即使我看到在provider / enaml视图中发生了一些奇怪的缓存)。

我现在使用OpenCV(OSX 64)的问题是,即使我调整大小以使用qt后端和CV_WINDOW_NORMAL,内容也不会延伸。 我喜欢OpenCV,因为我很容易获得基本的UI功能。

另一方面,我开始喜欢enaml,所以我想是否有人设法让这些人一起工作。 我在想如果与MPL的链接有效,可能会与OpenCV耦合:)

谢谢!

2 个答案:

答案 0 :(得分:2)

如果您可以将图像转换为argb32或png格式,则可以使用Enaml ImageView来显示它。

看一下ImageView示例: https://github.com/nucleic/enaml/blob/master/examples/widgets/image_view.enaml

答案 1 :(得分:1)

这应该这样做:

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)