私はopencvとc ++を初めて使用し、c ++を使用して、私のデルファイアプリでopencvを使用することを余儀なくされました。したがって、この関数をdllからエクスポートして、画像処理後にポインターをマットに変換してバイトに戻します。これは私が使用している関数です:
DllExport unsigned char* MatToBytes(cv::Mat *src, int &outLen)
{
cv::Mat &matCvrt = *src;
std::vector<unsigned char> *poutVet = new std::vector<unsigned char>();
std::vector<unsigned char> &outVet = *poutVet;
imencode(".png", matCvrt, outVet);
outLen = outVet.size();
unsigned char* outBytes;
outBytes = new unsigned char[outVet.size()];
std::copy(outVet.begin(), outVet.end(), outBytes);
vector<unsigned char>().swap(outVet);
return outBytes;
}
私はすでに一日中それについて調査しましたが、答えを見つけることができませんでした. コードを削除すると
vector<unsigned char>().swap(outVet);
正常に動作しますが、メモリリークが発生します。これをコードに入れると、「Debug Assertion Failed!」というメッセージが表示されます。誰かが私を助けてくれることを願っています、どうもありがとう。