Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python将IplImage转换为Qimage_Python_Opencv_Pyqt_Qimage_Iplimage - Fatal编程技术网

python将IplImage转换为Qimage

python将IplImage转换为Qimage,python,opencv,pyqt,qimage,iplimage,Python,Opencv,Pyqt,Qimage,Iplimage,我正在尝试使用openCV处理一些视频,然后将其放入pyqt Qimage中 我看到一些例子,但是它们都是C++的,我只能理解Python,< /P> 谁能帮我一下吗。。。谢谢您可以使用以下代码将numpy数组转换为QImage: from PyQt4.QtGui import QImage, qRgb import numpy as np class NotImplementedException: pass gray_color_table = [qRgb(i, i, i) fo

我正在尝试使用openCV处理一些视频,然后将其放入pyqt Qimage中

我看到一些例子,但是它们都是C++的,我只能理解Python,< /P>


谁能帮我一下吗。。。谢谢

您可以使用以下代码将numpy数组转换为QImage:

from PyQt4.QtGui import QImage, qRgb
import numpy as np

class NotImplementedException:
    pass

gray_color_table = [qRgb(i, i, i) for i in range(256)]

def toQImage(im, copy=False):
    if im is None:
        return QImage()

    if im.dtype == np.uint8:
        if len(im.shape) == 2:
            qim = QImage(im.data, im.shape[1], im.shape[0], im.strides[0], QImage.Format_Indexed8)
            qim.setColorTable(gray_color_table)
            return qim.copy() if copy else qim

        elif len(im.shape) == 3:
            if im.shape[2] == 3:
                qim = QImage(im.data, im.shape[1], im.shape[0], im.strides[0], QImage.Format_RGB888);
                return qim.copy() if copy else qim
            elif im.shape[2] == 4:
                qim = QImage(im.data, im.shape[1], im.shape[0], im.strides[0], QImage.Format_ARGB32);
                return qim.copy() if copy else qim

    raise NotImplementedException
然后在调用
toQImage()

另请参见OpenCV的CvMat和numpy阵列之间的转换。

这对我来说很有效

camcapture = cv.CaptureFromCAM(0)       
cv.SetCaptureProperty(camcapture,cv.CV_CAP_PROP_FRAME_WIDTH, 1280)
cv.SetCaptureProperty(camcapture,cv.CV_CAP_PROP_FRAME_HEIGHT, 720);

frame = cv.QueryFrame(camcapture)
image = QImage(frame.tostring(), frame.width, frame.height, QImage.Format_RGB888).rgbSwapped()
pixmap = QPixmap.fromImage(image)

我想在cvMat和QImage的对话中问同样的问题,但我没有找到任何python的例子

我是这样解决的:

pano = cv.CreateMat(int(height),int(width),0)
cv.Zero(pano)
cv.Resize(self.image,pano)
self._data=pano.tostring('raw') 
image2=QImage(self._data,pano.width,pano.height,QtGui.QImage.Format_Indexed8)

self.imageLabel.setPixmap(QPixmap(image2))

这个函数为我使用QT5工作,使用本地磁盘上的JPEG

from PyQt5.QtGui import QImage

from PyQt5.QtGui import QImage
def convertMatToQImage(cvImg):
    return QImage(cvImg.data, cvImg.shape[1], cvImg.shape[0], QImage.Format_RGB32)