为什么Objective-C不显示OpenCV捕获的视频的输出帧?



我是Objective C的新手,我想使用Opencv来捕获视频并处理每一帧。每一帧的输出应显示在屏幕上(ios模拟器)。

ViewController.h 中的代码是:

#import <UIKit/UIKit.h>
@interface ViewController : UIViewController {
    cv::Mat cvImage;
}
@property (nonatomic, weak) IBOutlet UIImageView* imageView;
@end

ViewController.m 中的代码是

#import "ViewController.h"
#import "opencv2/highgui/ios.h"
#import <AVFoundation/AVFoundation.h>
#import <AVKit/AVKit.h>
#import <MediaPlayer/MediaPlayer.h>
#import <iostream>
using namespace cv;
using namespace std;
@implementation ViewController
@synthesize imageView;
- (void)viewDidLoad
{
    [super viewDidLoad];
    Mat frame;
    cv::VideoCapture cap(VIDEO_PATH);
    int count = 0;
    if(!cap.isOpened()){
        cout << "bad frame!!!!" << endl;
    }
    while(1){
         if(!cap.read(frame)){
            cout << "cannot read " << endl;
            exit(0);
         }
        cout << count++ << endl;
        imageView.image = MatToUIImage(frame);
        imageView.frame = CGRectMake(50, 50, 150, 150); // pass your frame here
        [self.view addSubview:imageView];
    }
}
...
@end

如果我删除 while 循环,模拟器将显示视频中的第一帧,这是合理的。但是如果我有 while 循环,在输出控制台中,帧数正在计数,这意味着程序正在从视频中读取帧,但在 ios 模拟器中,什么都没有......

由于我想处理基于 OpenCV 的每一帧,那么在使用 OpenCV 捕获并处理后如何显示每一帧?

谢谢!

不要每帧添加新的子视图。只需将图像设置为现有视图即可。

相关内容

  • 没有找到相关文章

最新更新