uiimage-cv::mat转换到UIImage时恢复图像

问题描述

cv::mat转换到UIImage时恢复图像

使用下面的函数转换cv::matUIImage

-(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((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;
}

但是恢复的图片颜色没有匹配原始图像。我是从CvVideoCamera delegate中得到的cv:Mat。

- (void)processImage:(Mat&)image
{
    UIImage* img = [self UIImageFromCVMat:image]
}

代码有什么问题么?

时间: 2024-12-21 06:02:32

uiimage-cv::mat转换到UIImage时恢复图像的相关文章

Word 2007转换WEB页面时,用文字代替不能正常显示的图片

Word 2007转换WEB页面时,用文字代替不能正常显示的图片   当将Word2007内容转换成WEB网页内容的时候,如果部分网页图片不能正常显示,这会让生成的网页非常的难看,非常的不协调.我们这时可以通过在图片位置显示代替文字来替换无法显示的图片.具体的操作方法如下: (1)在目标图片上单击右键,执行"设置图片格式"命令,打开"设置图片格式"对话框. (2)单击"可选文字"选项卡,在"可选文字"区域下 文本框中,输入要显

java做 pdf转换成图片 时出现Unknown CMap: UniGB-UCS2-H?急~

问题描述 java做 pdf转换成图片 时出现Unknown CMap: UniGB-UCS2-H?急~ java.io.IOException: Unknown CMap: UniGB-UCS2-H at com.sun.pdfview.font.PDFCMap.getCMap(PDFCMap.java:67) at com.sun.pdfview.font.PDFFontEncoding.(PDFFontEncoding.java:73) at com.sun.pdfview.font.PD

ios-NSString转换到NSDate时日期不对

问题描述 NSString转换到NSDate时日期不对 代码: NSString * dateStr = @"7/25/2013 12:00:00 AM"; NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"MM/dd/yyyy hh:mm:ss a"]; NSDate *date = [dateFormat dateFromString

selector的使用,用于点击换图,当手离开时恢复

问题描述 selector的使用,用于点击换图,当手离开时恢复 之前默认一张图片,点击以后更改图片,当手放开时恢复,求大神指教,在selector里面可以实现吗? 解决方案 有个方法叫state_pressed 你按下之后的状态设置true貌似就可以变化了 解决方案二: 你好,按照你的描述应该是类似于网页的hover效果,可以使用selector 解决方案三: 解决方案四: 为什么代码显示不出来

视频播放-android videoview 播放时视频图像偏离videoview的问题

问题描述 android videoview 播放时视频图像偏离videoview的问题 videoview被放到了ListView里(蛋疼),当videoview被滑出屏幕一部分时,也就是videoview只能看见一半,这时播放视频时,视频图像严重偏离videoview的窗口.也就是videoview里只看到一部分视频图像,其他部分全是黑的.请求大神帮助,谢谢.

cv 32f-OpenCV转换到lab颜色空间的CV_32F类型Mat图像分通道处理uchar指针和float数据

问题描述 OpenCV转换到lab颜色空间的CV_32F类型Mat图像分通道处理uchar指针和float数据 转换到lab颜色空间CV-32F类型Mat图像,需要分通道处理,3个通道,l.a.b都是CV-32F类型的Mat数据,使用uchar指针进行像素访问,并将3个通道处理结果赋值给一个新的CV-32F类型Mat图像testSal.问题是3个通道的处理结果仍是float型,赋值给uchar指针指向的对象可能会存在数据精度损失,在调试的过程中发现数据的值有问题,麻烦高人指点下怎么解决,万分感激

sqlserver2005没有log日志文件时恢复数据库的方法

SQLServer2005数据库日志文件损坏的情况下如何恢复数据库呢?下面我们来详细分析... 在某些偶然的情况下, 会引起SQL Server 2005数据库日志文件的损坏,比如:硬件故障.计算机非正常重启或关机. 当SQL Server 2005数据库日志文件损坏时,可能会出现以下情况: 1.在SQL Server Management Studio中显示数据库处于置疑(suspect)状态. 2.事件日志可能会出现如下错误信息:Could not redo log record (2173

迁移数据时oracle字符集的转换迁移数据时oracle字符集的转换

按照oracle官方文档所说,数据库字符集在创建后原则上不能更改.因此,在设计和安装之初考虑使用哪一种字符集十分重要.对数据库server而言,错误的修改字符集将会导致很多不可测的后果,可能会严重影响数据库的正常运行.但是由于每家软件公司使用的字符集一样,迁移数据时肯定是会遇到字符集转换的问题.比如最常遇到是英文字符集转换成中文,中文的转换成英文.而且在迁移数据时都是上百GB的dmp文件啊.在迁移数据过程中我使用过两种方法一是修改dmp文件的字符集一是修改数据库的字符集.修改dmp文件字符集,d

操作系统损坏时恢复Oracle10g全过程

环境:oracle10g,操作系统5.2 数据库系统在rootvg下/oracle文件系统下,数据文件在datavg下/oradata文件系统下 控制文件在 $/ORACLE_HOME/dbs/一个和/oradata下两个 重做日志文件在 $/ORACLE_HOME/dbs/和/oradata下每组日志文件各一个,共三组 有最新spfile文件备份. 1.rootvg损坏,重新安装操作系统. 2.安装oracle数据库系统文件 3.恢复spfile文件到$/ORACLE_HOME/dbs/下,