2

私はopenCVでリアルタイムのビデオ処理を行っています。実際、処理中に画面が少し途切れるほどです。私がやりたいことは、通常どおり CvVideoCameraDelegate メソッドを使用して画像を処理することですが、キャプチャ セッションのビデオ出力のみをユーザーに表示することです

デリゲート コールバック メソッドですべてのビデオ処理を行います

- (void)processImage:(Mat&)image;

そのため、ビューをロードするときに、キャプチャ セッションが出力されるように設定しようとします。次のように CVVideoCamera のキャプチャ セッションにアクセスできるようです。

AVCaptureSession *session = videoCamera.captureSession;

それでは、baseView と呼ばれる接続先のレイアウト ファイルにビューがあります。私はこのようにしようとします:

AVCaptureVideoPreviewLayer *previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:session];
CGRect screenRect = baseView.bounds;
previewLayer.frame = screenRect; // Assume you want the preview layer to fill the view.
[baseView.layer addSublayer:previewLayer];

ただし、これは機能しません。ただの真っ白な画面。バックグラウンドでビデオ処理がまだ行われていることはわかりますが、とにかくビデオは出力されていません。

編集:CPUタスクを制限しようとしているため、これを行うために追加のキャプチャセッションをセットアップしただけではないことに注意してください

4

1 に答える 1

1

わかりました:

入力してみた

BOOL loaded = videoCamera.captureSessionLoaded;

そして、カメラが完全にロードされていないことが判明しました。実際、キャプチャを開始するまで完全にロードされません (当然だと思いますか?)。

したがって、コードを下に置くとすぐに

[self.videoCamera start];

すべてが期待どおりに機能しているようです

于 2012-11-14T21:19:09.993 に答える