opencv CV::MAT在调试模式下预览图像

kxe2p93d  于 2022-11-15  发布在  其他
关注(0)|答案(3)|浏览(199)

如果映像是UIMimage,我们可以在xcode的调试模式下查看映像,但对于cv::mat images,我不能查看,这是正常的,那么,是否有任何附加工具可以添加到xcode中,以便在cv::mat images的调试模式下显示(或查看)映像?

w8rqjzmb

w8rqjzmb1#

如果您可以使用CLion而不是Xcode,则可以利用OpenCV Image Viewer插件,该插件在调试时只需单击即可显示矩阵。
https://plugins.jetbrains.com/plugin/14371-opencv-image-viewer

免责声明:我是这个插件的作者

bzzcjhmw

bzzcjhmw2#

你应该创建一个在其中安装opencv2.framework的ios项目,并将你的cpp代码拖到该项目中,创建一个新的条目来运行,然后你应该能够使用上面的转换代码来查看作为UIImage的mat ...

yvgpqqbh

yvgpqqbh3#

我不知道我是否理解了你的问题,但是如果你想简单地显示cv::Mat预览,你可以把cv::Mat转换成UIImage。我可以告诉你如何在Objective-C中做到这一点:

-(UIImage *)UIImageFromCVMat:(cv::Mat)cvMat
{
    NSData *data = [NSData dataWithBytes:cvMat.data length:cvMat.elemSize()*cvMat.total()];
    CGColorSpaceRef colorSpace;

    if (cvMat.elemSize() == 1) {
        colorSpace = CGColorSpaceCreateDeviceGray();
    } else {
        colorSpace = CGColorSpaceCreateDeviceRGB();
    }

    CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data);

    // Creating CGImage from cv::Mat
    CGImageRef imageRef = CGImageCreate(cvMat.cols,                                    //width
                                    cvMat.rows,                                 //height
                                    8,                                          //bits per component
                                    8 * cvMat.elemSize(),                       //bits per pixel
                                    cvMat.step[0],                            //bytesPerRow
                                    colorSpace,                                 //colorspace
                                    kCGImageAlphaNone|kCGBitmapByteOrderDefault,// bitmap info
                                    provider,                                   //CGDataProviderRef
                                    NULL,                                       //decode
                                    false,                                      //should interpolate
                                    kCGRenderingIntentDefault                   //intent
                                    );

    // Getting UIImage from CGImage
    UIImage *finalImage = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);
    CGDataProviderRelease(provider);
    CGColorSpaceRelease(colorSpace);
    return finalImage;
}

如果这是你问的,在StackOveflow上还有很多类似的问题:
how to convert from cvMat to UIImage in objective-c?
how to convert from cvMat to UIImage in objective-c?

相关问题