将IplImage转换为QByteArray

时间:2011-12-01 07:45:52

标签: qt opencv qt4 udp

我需要发送从UDP套接字摄像头获取的IplImages。我正在使用Qt。该应用程序有两个部分。服务器应该从数码相机获取图像并通过更新(广播)将它们发送到特定端口。客户端是GUI应用程序。他们将收到图像并在QLabel上显示。

我正在使用OpenCV进行图像处理,因此我的相机输入为IplImage。我知道如何将其转换为QImage / QPixmap并将其显示在标签上。但找不到通过udp套接字发送IplImage的方法... QUdpSocet::writeDatagram只接受QByteArray,因此我需要将IplImage转换为QByteArray并且这应该非常快(在服务器上转换图像是不合适的。)

1 个答案:

答案 0 :(得分:1)

我看到你可以创建一个QByteArray:

QByteArray ( const char * data, int size )

在IplImage部分你有:

 int imageSize

    Image data size in bytes. For interleaved data, this equals image->height * image->widthStep

char* imageData

    A pointer to the aligned image data. Do not assign imageData directly. Use SetData().

所以它应该很简单,如QByteArray(image-> imageData,image-> imageSize);