typedef struct _IplImage { int nSize; // sizeof(IplImage) int ID; // Версия (=0) int nChannels; // Число каналов int alphaChannel; // Альфа-канал int depth; // Глубина в битах char colorModel[4]; // Не используется в OpenCV char channelSeq[4]; // Аналогично int dataOrder; // Расположение каналов int origin; // Начало координат int align; // Выравнивание строк изображения (OpenCV использует widthStep) int width; // Ширина int height; // Высота struct _IplROI* roi; // ROI struct _IplImage* maskROI; // =0 void* imageId; // struct _IplTileInfo* tileInfo; // int imageSize; // Память выделенная под изображение char* imageData; // Данные изображения int widthStep; // Число байт в одной строке изображения int BorderMode[4]; // Не используется в OpenCV int BorderConst[4]; // Аналогично char* imageDataOrigin; // Используется для правльного освобождения памяти} IplImage;
IplImage *frame; frame = cvQueryFrame(camera); cvwidget->putImage (frame); cvWriteFrame(writer, frame); this->sock->write (reinterpret_cast<char*>(frame));
IplImage* img; img = cvCreateImage(cvSize(320, 240), IPL_DEPTH_8U, 1); int imgsize = img->imageSize; char sockdata[imgsize]; int i, j, k, bytes; QByteArray arr = sock->readAll (); img = reinterpret_cast<IplImage*>(arr.data ()); cvwidget->putImage (img);
C++ (Qt)this->sock->write (reinterpret_cast<char*>(frame));
C++ (Qt)QDataStream s;s << frame.nChannels << frame.alphaChannel << frame.depth << ... << QByteArray(frame.imageData, frame.imageSize) << ...