首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Opencv和PyGi :如何显示opencv读取的图像

Opencv和PyGi :如何显示opencv读取的图像
EN

Stack Overflow用户
提问于 2015-05-06 14:37:58
回答 2查看 1.7K关注 0票数 0

我想在PyGi中显示一个图像,图像首先被opencv读取。但是,它失败了。

代码语言:javascript
复制
from gi.repository import Gtk, GdkPixbuf
import cv2
import numpy as np
window = Gtk.Window()
image = Gtk.Image()
image.show()
window.add(image)
window.show_all()
im = cv2.imread("file.bmp")
a = np.ndarray.tostring(img)
h, w, d = img.shape
p = GdkPixbuf.Pixbuf.new_from_data(a,GdkPixbuf.Colorspace.RGB, False, 8, w, h, w*3, None, None)
image.set_from_pixbuf(p)
Gtk.main()

但结果是一张黑色的图像。此外,如果我循环访问一组文件(一个目录中的多个.bmp文件),我会得到核心转储(可疑GdkPixbuf.Pixbuf.new_from_data)

这是让opencv和PyGi交互的正确方式吗?我设法在Tkinter上使用了opencv,但我无法在PyGi上使用它。

EN

回答 2

Stack Overflow用户

发布于 2015-05-06 20:08:53

您可以尝试使用GdkPixbuf.PixbufLoader:

代码语言:javascript
复制
loader = GdkPixbuf.PixbufLoader()
loader.write(img)
loader.close()
pixbuf = loader.get_pixbuf()
image = Gtk.Image.new_from_pixbuf(pixbuf)
票数 0
EN

Stack Overflow用户

发布于 2017-07-10 03:58:55

这对我来说真的很好。在您的例子中,问题可能是两个不同的变量'im‘(您正在读取CV图像)和'img’(您要转换为字符串的变量)?

这是一个简化的代码,它在显示摄像头的视频帧时为我工作:

代码语言:javascript
复制
# OpenCV image:
cap = cv2.VideoCapture(0)
ret, img = cap.read()
# Gtk Image:
img_gtk = Gtk.Image()
# Do other things such as attaching the 'img_gtk' to a window/grid...

# Convert and display:
h, w, d = img.shape
pixbuf = GdkPixbuf.Pixbuf.new_from_data  (img.tostring(), GdkPixbuf.Colorspace.RGB, False, 8, w, h, w*3, None, None)
img_gtk.set_from_pixbuf (pixbuf)
img_gtk.show()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30069275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档