OpenCV imencode pgm не кодирует правильный формат

Я пытаюсь кодировать изображение Mat CV_32FC1, чтобы отправить его через Интернет с base64, процесс работает, но OpenCV кодирует в неправильном формате. Пример:

vector<unsigned char> buffer;
vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_PXM_BINARY);
compression_params.push_back(0);
cv::imencode(".pgm", desc, buffer, compression_params);
printf("%s", &buffer[0]);

Это создает следующий вывод:

P2
64 15
255
0   0   0   0   1   0   0   0   0   1   0   0   0   0   0   0   1   0   0   0   0   0     0   0   0   0
etc..

В соответствии с параметром сжатия и первым параметром (P2) он не должен быть закодирован как двоичный формат, это должен быть ASCII. (Источник)

Само по себе это не проблема, но когда я меняюсь compression_params.push_back(0) в compression_params.push_back(1) Я получаю этот вывод (без данных изображения):

P5
64 15
255

Я использую OpenCV 2.4.4 на iOS, как я могу это исправить или, как альтернативно, как я могу отправить Мат лучше, без потери данных?

0

Решение

Не знаю, решили ли вы свою проблему, но я выяснил проблему, и она может относиться и к вашему делу, даже если вы используете версию для iOS, с которой я не знаком:

Как мне захватывать изображения в OpenCV и сохранять в формате pgm?

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]