2017-11-04 21 views
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::MatCVPixelBufferに戻ってCoreMLモデルに供給してください。どうすればこれを達成できますか? (あるいは、ビジョンはいくつかの特別なテクニックを使って黒い詰め物を作ることができますか?)

助けてください。

答えて

0

まず、マットをUIImage(またはiOS APIの他のクラス)に変換するには、questionにチェックを入れてください。その後、結果画像を、thisのように変換します。

+0

あなたの助けていただきありがとうございますが、この方法はあまりにも遅く、ビデオ処理アプリケーションでは使用できません。 – AXIHIXA

関連する問題