Cela fait partie de mon programme:l'image JPG passe de 30KB à 300KB après cvCreateImageHeader
// let's get jpg image from socket
int iRcvdBytes=recvfrom(iSockFd, buff, bufferSize, 0,
(struct sockaddr*)&cliAddr, (socklen_t*)&cliAddrLen);
// buff now contains 30KB jpg image
// let's load the jpg image to IplImage
IplImage* fIplImageHeader;
fIplImageHeader = cvCreateImageHeader(cvSize(640, 480), 8, 1);
fIplImageHeader->imageData = (char *)buff;
// now let's check the size difference
cout << "Received " << iRcvdBytes << " bytes from the client" << endl;
cout << fIplImageHeader->imageSize << endl;
Et la sortie est:
Received 31860 bytes from the client
307200
Maintenant, pourquoi est-ce? CvCreateImageHeader() convertit l'image jpg en RGB ou quelque chose comme ça en interne? Je veux qu'il reste JPG et l'affiche avec cvShowImage().
S'il vous plaît, toute aide serait la bienvenue. Jpeg ne représente pas une représentation exacte d'une image.
Oui. Mais je veux charger le jpg du tampon sans décompresser. –
Eh bien, je veux un poney. Malheureusement pour nous deux, je vais devoir partir sans poney pour l'instant, et vous devrez décompresser les données d'image pour utiliser ces images avec OpenCV. – SingleNegationElimination