iOS 和 OpenCV : how to initialise CvVideoCamera object to reflect UIImage size?

标签 ios objective-c opencv uiimage

这是我用来初始化 ViewController 中 UIImage View 对象中的 CvVideoCamera feed 的代码。我怎样才能使相机调整到 UIImageView 的大小?

现在,当 View 首次加载时,相机会稍微小一些,只有当我旋转屏幕时,相机才会变大

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.videoCamera = [[CvVideoCamera alloc] initWithParentView:imageView];
    self.videoCamera.delegate = self;

    self.videoCamera.defaultAVCaptureDevicePosition = AVCaptureDevicePositionBack;
    self.videoCamera.defaultAVCaptureSessionPreset = AVCaptureSessionPreset352x288;
    self.videoCamera.defaultAVCaptureVideoOrientation = AVCaptureVideoOrientationPortrait;
    self.videoCamera.defaultFPS = 30;
    self.videoCamera.rotateVideo = true;
    self.videoCamera.grayscaleMode = NO;

最佳答案

我建议您按如下方式初始化相机。

    self.videoCamera = [[CvVideoCamera alloc] init];

然后在你的processImage:(cv::Mat &)image中方法中,您应该使用 GCD 显式地将图像设置为 UIImageView。还要确保在使用 cvtColor 转换为 UIImage 之前将其从 BGR 转换为 RGB如下

    Mat RGB;
    cvtColor(image, RGB, CV_BGR2RGB);
    dispatch_async(dispatch_get_main_queue(), ^{
        self.capturePreview.image = [UIImage UIImageFromCVMat:RGB];
    });

在本例中 self.capturePreview是 UIImageView 的一个实例。那么您缺少的关键组件是确保您的 viewDidLoad()方法是添加行 self.capturePreview.contentMode = UIViewContentModeScaleAspectFill;

UIImageView 的默认模式是 UIViewContentModeScaleToFill因此,您的图像实际上被相机捕获并剪辑。

希望对你有帮助!

关于iOS 和 OpenCV : how to initialise CvVideoCamera object to reflect UIImage size?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35848889/

相关文章:

ios - 显示 : flex? 的 iOS 渲染错误

ios - 如何使用 OpenSSL 在 Swift 中防止错误输入 d2i_X509_REQ_bio 导致的 fatal error

ios - 用于查看特定内存地址处人类可读值的 LLDB 命令

objective-c - 如何将 OCLint 用于 Cocoa 框架?

opencv - project1.exe中0x52f9e470处未处理的异常:0xC000001D:非法指令

c# - 如何为c#窗口应用程序创建opencv dll

ios - 单击按钮时如何保留 UIAlertController?

iphone - UIButton Action

ios - 使用 NSURLRequest 的 AFNetworking 3.0 AFHTTPSessionManager

python - 无法使用 OpenCV 4.0.0 和 Python 3.7 进行图像配准