0
私は学部生で、CoreML
を使っていくつかのHumanSeg iPhoneアプリをやっています。私のモデルは元のビデオフレームにサイズ変更と黒い埋め込みが必要なので、私はVision
(サイズ変更のみを提供していますが、黒い埋め込みはしていません)に依存せず、自分自身で変換する必要があります。opencv cv :: MatをCVPixelBufferに変換するには
私はCVPixelBuffer
フレームを持っていると私は、次のコードを使用してcv::Mat
にそれを変換した:
CVPixelBufferLockBaseAddress(pixelBuffer, 0);
int bufferWidth = (int) CVPixelBufferGetWidth(pixelBuffer);
int bufferHeight = (int) CVPixelBufferGetHeight(pixelBuffer);
int bytePerRow = (int) CVPixelBufferGetBytesPerRow(pixelBuffer);
unsigned char *pixel = (unsigned char *) CVPixelBufferGetBaseAddress(pixelBuffer);
Mat image = Mat(bufferHeight, bufferWidth, CV_8UC4, pixel, bytePerRow);
CVPixelBufferUnlockBaseAddress(pixelBuffer, 0);
/*I'll do my resizing and padding here*/
// How can I implement this function?
convertToCVPixelBuffer(image);
しかし、今、私は私の前処理作業を行ってきた後、私が持っている変換することcv::Mat
をCVPixelBuffer
に戻ってCoreML
モデルに供給してください。どうすればこれを達成できますか? (あるいは、ビジョンはいくつかの特別なテクニックを使って黒い詰め物を作ることができますか?)
助けてください。
あなたの助けていただきありがとうございますが、この方法はあまりにも遅く、ビデオ処理アプリケーションでは使用できません。 – AXIHIXA