私は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タスクを制限しようとしているため、これを行うために追加のキャプチャセッションをセットアップしただけではないことに注意してください