iphone - OpenCV视频处理教程问题

标签 iphone ios objective-c opencv computer-vision

我关注了 iOS video processing tutorial on the OpenCV site并设法编译并安装在设备上。但是,当我单击“开始”按钮时,没有任何可见的事情发生。显然,我的 - (void)processImage:(Mat&)image 回调从未被调用过。你能给我一些提示,可能是什么问题吗?

我检查的一些东西:

  • actionStart 被调用,两个日志行都打印 YES
  • self 对象在分配给 self.videoCamera.delegate 时有效
  • imageView 有效且在屏幕上可见
  • videoCamera 在其 start 方法被调用时被初始化

我使用 iPhone 3GS 进行测试。

这是我的 ViewController.h 的完整源代码:

#import <UIKit/UIKit.h>
#import <opencv2/highgui/cap_ios.h>

@interface ViewController : UIViewController <CvVideoCameraDelegate>
{
    IBOutlet UIImageView* imageView;
    IBOutlet UIButton* button;

    CvVideoCamera* videoCamera;
}

- (IBAction)actionStart:(id)sender;

@property (nonatomic, strong) CvVideoCamera* videoCamera;

@end

和ViewController.mm:

@implementation ViewController

@synthesize videoCamera;

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.videoCamera = [[CvVideoCamera alloc] initWithParentView:imageView];
    self.videoCamera.delegate = self;

    self.videoCamera.defaultAVCaptureDevicePosition = AVCaptureDevicePositionFront;
    self.videoCamera.defaultAVCaptureSessionPreset = AVCaptureSessionPreset352x288;
    self.videoCamera.defaultAVCaptureVideoOrientation = AVCaptureVideoOrientationPortrait;
    self.videoCamera.defaultFPS = 30;
    self.videoCamera.grayscaleMode = NO;

}

#pragma mark - UI Actions

- (IBAction)actionStart:(id)sender;
{
    [self.videoCamera start];
    NSLog(@"video camera running: %d", [self.videoCamera running]);
    NSLog(@"capture session loaded: %d", [self.videoCamera captureSessionLoaded]);
}

#pragma mark - Protocol CvVideoCameraDelegate

- (void)processImage:(cv::Mat&)image
{
    // Do some OpenCV stuff with the image
    cv::Mat image_copy;
    cvtColor(image, image_copy, CV_BGRA2BGR);

    // invert image
    bitwise_not(image_copy, image_copy);
    cvtColor(image_copy, image, CV_BGR2BGRA);
}

@end

最佳答案

我在 iPhone 4 上测试过,效果很好。也许 iPhone 3GS 没有前置摄像头?然后你必须改变这一行:self.videoCamera.defaultAVCaptureDevicePosition = AVCaptureDevicePositionFront to self.videoCamera.defaultAVCaptureDevicePosition = AVCaptureDevicePositionBack

关于iphone - OpenCV视频处理教程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14274326/

相关文章:

带有自定义单元 Storyboard 的 IOS SearchDisplayController

iOS - 无法添加 URLRequest 的 http header

ios - compactMapValues不过滤零值

ios - NSNotificationCenter 线程在第二次调用时中断,即使它已被删除

objective-c - 未解析的标识符 - Swift 中的 Objective-C Pod

iphone - Apple Appstore 上的客户评级?

iphone - 如何移动 UIToolbar 项目?

iphone - 在iOS中提取zlib文件?

ios - 添加新内容并刷新 UITableView 会在 Swift 中卡住我的应用程序几秒钟

objective-c - 如何使用 SQLite 存储在 Core Data 中查询未保存的数据?