• IOS导入OpenCV

    2016-07-11 17:54:31
    1,试过从官网直接下库但是貌似编译的时候一堆错误。 2,后来直接就用Cocapods啦 直接在Podfile中添加pod ‘OpenCV’, ‘~> ...#import <opencv2/opencv.hpp> #endif4,编译一下工程试试。OK编译完成 ,证明已经成

    1,试过从官网直接下库但是貌似编译的时候一堆错误。
    2,后来直接就用Cocapods啦
    直接在Podfile中添加pod ‘OpenCV’, ‘~> 3.0.0’。然后在命令行输入Pod install,就好了。

    3.在pch文件中加入以下定义

    #ifdef __cplusplus
    #import <opencv2/opencv.hpp>
    #endif

    4,编译一下工程试试。OK编译完成 ,证明已经成功导入OpenCV了
    5.如何使用呢。openCV是C++的 要进行混编。最好的方式是用.mm文件包一层,这样就可以很方便的用在objective-C的文件中使用了。

    展开全文
  • openCV for iOS 3.0 配置openCV开发环境 在OpenCV官网中下载OpenCV开发包(官网地址:http://opencv.org/) 1.新建项目,Single View Application 2.TARGETS -> General -> Linked Frameworks and ...

    开发环境:
    Xcode 6.4  
    openCV for iOS 3.0 
     
    配置openCV开发环境
    在OpenCV官网中下载OpenCV开发包(官网地址:http://opencv.org/
    1.新建项目,Single View Application
     
    2.TARGETS -> General -> Linked Frameworks and Libraries
    3.添加Add Other...
    4.在Building phase 中添加opencv2.framework
    5.导入成功。。。 
     
    初步使用时,可以导入头文件

    #import <opencv2/opencv.hpp>

    转载于:https://www.cnblogs.com/iOSDeng/p/5081511.html

    展开全文
  • iOS下配置opencv 按照网上的教程把opencv2.framework导入了: ![图片说明](https://img-ask.csdn.net/upload/201602/17/1455671915_767177.png) 但是运行时有很多问题: ![图片说明]...
  • 问题1:“_jpeg_free_small" referenced from: _free_pool in opencv2(jmemmgr.o)等一系列jpeg问题 参考该处 解决办法:也有人说2.4.13就解决了该问题,但是我试了下,还是会报这个错 jpeg下载 安装下载的文件,...

    问题1:“_jpeg_free_small" referenced from: _free_pool in opencv2(jmemmgr.o)等一系列jpeg问题
    参考该处
    解决办法:也有人说2.4.13就解决了该问题,但是我试了下,还是会报这个错

    • jpeg下载
    • 安装下载的文件,安装后可以在这个地址找到它:/opt/libjpeg-turbo/lib
    • 打开终端,输入lipo -info /opt/libjpeg-turbo/lib/libjpeg.a(注意空格)会得到这样的结果* Architectures in the fat file: /opt/libjpeg-turbo/lib/libturbojpeg.a are: i386 x86_64 armv6 armv7 armv7s arm64*
    • 打开finder找到/opt/libjpeg-turbo/lib and copy libjpeg.a这个.a文件,拖到工程中
    • 在Linked frameworks and libraries中也添加该文件,运行,问题解决

    问题2:libjpeg.a does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture armv7
    参考该处,有原理解析
    解决办法:将bitcode直接关掉就可以了。target —> Built Seeting —>搜索 bitcode —>将Yes置为No


    问题3:跑别人的项目,真机调试报错
    参考该处
    解决办法:

    • 先把General下的Bundle Identifier 改成自己定义的
    • 然后把Signing & Capabilities 下的team改成自己的账号,然后添加整数即可

    展开全文
  • opencv官网下载iosopencv2.framework文件,导入到xcode工程 下面是我按照camshift的源码改写的Object-c代码 导入这几个头文件,因为是要对视频进行逐帧分析,请导入视频相关的库文件,并加入下列...
    从opencv官网下载ios版 opencv2.framework文件,导入到xcode工程
    

    下面是我按照camshift的源码改写的Object-c代码

    导入这几个头文件,因为是要对视频进行逐帧分析,请导入视频相关的库文件,并加入下列头文件

    #import <opencv2/imgproc/imgproc_c.h>

    #import <opencv2/video/tracking.hpp>

    #import <opencv2/objdetect/objdetect.hpp>





    加入视频流监听

    <AVCaptureVideoDataOutputSampleBufferDelegate>实现视频流监听的代理


    以一是UIImage到OpenCV图像数据的转换,下面会调用到这几个函数

    #pragma mark -

    #pragma mark OpenCV Support Methods


    // NOTE you SHOULD cvReleaseImage() for the return value when end of the code.

    - (IplImage *)CreateIplImageFromUIImage:(UIImage *)image {

    CGImageRef imageRef = image.CGImage;


    CGColorSpaceRef colorSpace =CGColorSpaceCreateDeviceRGB();

    IplImage *iplimage =cvCreateImage(cvSize(image.size.width, image.size.height),IPL_DEPTH_8U,4);

    CGContextRef contextRef =CGBitmapContextCreate(iplimage->imageData, iplimage->width, iplimage->height,

    iplimage->depth, iplimage->widthStep,

    colorSpace, kCGImageAlphaPremultipliedLast|kCGBitmapByteOrderDefault);

    CGContextDrawImage(contextRef,CGRectMake(0,0, image.size.width, image.size.height), imageRef);

    CGContextRelease(contextRef);

    CGColorSpaceRelease(colorSpace);


    IplImage *ret =cvCreateImage(cvGetSize(iplimage),IPL_DEPTH_8U,3);

    cvCvtColor(iplimage, ret,CV_RGBA2BGR);

    cvReleaseImage(&iplimage);


    return ret;

    }


    // NOTE You should convert color mode as RGB before passing to this function

    - (UIImage *)UIImageFromIplImage:(IplImage *)image {

    NSLog(@"IplImage (%d, %d) %d bits by %d channels, %d bytes/row %s", image->width, image->height, image->depth, image->nChannels, image->widthStep, image->channelSeq);


    CGColorSpaceRef colorSpace =CGColorSpaceCreateDeviceRGB();

    NSData *data = [NSDatadataWithBytes:image->imageDatalength:image->imageSize];

    CGDataProviderRef provider =CGDataProviderCreateWithCFData((CFDataRef)data);

    CGImageRef imageRef =CGImageCreate(image->width, image->height,

    image->depth, image->depth * image->nChannels, image->widthStep,

    colorSpace, kCGImageAlphaNone|kCGBitmapByteOrderDefault,

    provider,NULL,false,kCGRenderingIntentDefault);

    UIImage *ret = [UIImageimageWithCGImage:imageRef];

    CGImageRelease(imageRef);

    CGDataProviderRelease(provider);

    CGColorSpaceRelease(colorSpace);

    return ret;

    }


    下面是我照着camsift改写的代码

    - (void) CamShiftDetect:(UIImage *)capPic  {


    NSAutoreleasePool * pool = [[NSAutoreleasePoolalloc]init];

       IplImage *image =0, *hsv = 0, *hue =0, *mask = 0, *backproject =0, *histimg = 0;

       CvHistogram *hist =0;

       int backproject_mode =0;

       int track_object =0;

       int select_object =0;

       CvConnectedComp track_comp;

       CvRect selection;

       CvRect track_window;

       CvBox2D track_box;


       int hdims =16;

       float hranges_arr[] = {0,180};

       float* hranges = hranges_arr;

       int vmin =90, vmax =256, smin =90;

    //if(imageView.image) {

    cvSetErrMode(CV_ErrModeParent);

            

            /* allocate all the buffers */

           IplImage* frame =0;

            frame = [selfCreateIplImageFromUIImage:capPic];

            //NSLog(@"%d  %d" , cvGetSize(frame).width, cvGetSize(frame).height);

            image =cvCreateImage(cvGetSize(frame),8,3 );

            image->origin = frame->origin;

            hsv =cvCreateImage(cvGetSize(frame),8,3 );


            hue =cvCreateImage(cvGetSize(frame),8,1 );

            mask =cvCreateImage(cvGetSize(frame),8,1 );

            backproject =cvCreateImage(cvGetSize(frame),8,1 );

            hist =cvCreateHist(1, &hdims,CV_HIST_ARRAY, &hranges,1 );

            histimg =cvCreateImage(cvSize(360,480),8,3 );

           cvZero( histimg );

            

            NSString *path = [[NSBundlemainBundle]pathForResource:@"target12"ofType:@"jpg"];

            IplImage *tempimage = [selfCreateIplImageFromUIImage:[UIImageimageWithContentsOfFile:path]];

    cvCvtColor( tempimage, hsv,CV_BGR2HSV );

           int _vmin = vmin, _vmax = vmax;

            

           cvInRangeS( hsv,cvScalar(0,smin,MIN(_vmin,_vmax),0),

                      cvScalar(180,256,MAX(_vmin,_vmax),0), mask );

           cvSplit( hsv, hue,0, 0, 0 );

            

            selection.x =1;

            selection.y =1;

            selection.width =360-1;

            selection.height=480-1;

            

           cvSetImageROI( hue, selection );

           cvSetImageROI( mask, selection );

           cvCalcHist( &hue, hist,0, mask );

            

           float max_val =0.f;

            

           cvGetMinMaxHistValue( hist,0, &max_val, 0,0 );

           cvConvertScale( hist->bins, hist->bins, max_val ?255. / max_val : 0.,0 );

           cvResetImageROI( hue );

           cvResetImageROI( mask );

            track_window = selection;

            track_object =1;

            

            

           cvZero( histimg );

           int bin_w = histimg->width / hdims;

           for(int i =0; i < hdims; i++ )

            {

               int val =cvRound(cvGetReal1D(hist->bins,i)*histimg->height/255 );

               CvScalar color =hsv2rgb(i*180.f/hdims);

               cvRectangle( histimg,cvPoint(i*bin_w,histimg->height),

                           cvPoint((i+1)*bin_w,histimg->height - val),

                            color, -1,8,0 );

            }

            

           cvReleaseImage(&tempimage);

           cvCopy( frame, image,0 );

           cvCvtColor( image, hsv,CV_BGR2HSV );


           if( track_object )

            {

               int _vmin = vmin, _vmax = vmax;

                

               cvInRangeS( hsv,cvScalar(0,smin,MIN(_vmin,_vmax),0),

                          cvScalar(180,256,MAX(_vmin,_vmax),0), mask );

               cvSplit( hsv, hue,0, 0, 0 );

                

               cvCalcBackProject( &hue, backproject, hist );

               cvAnd( backproject, mask, backproject,0 );

                

               cvCamShift( backproject, track_window,cvTermCriteria(CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 10, 1 ),&track_comp, &track_box );

                track_window = track_comp.rect;

                

               if( backproject_mode )

                   cvCvtColor( backproject, image,CV_GRAY2BGR );

               if( image->origin )

                    track_box.angle = -track_box.angle;

               cvEllipseBox( image, track_box,CV_RGB(255,0,0),3,CV_AA, 0 );

                // Create canvas to show the results

               CGImageRef imageRef =imageView.image.CGImage;

               CGColorSpaceRef colorSpace =CGColorSpaceCreateDeviceRGB();

                CGContextRef contextRef =CGBitmapContextCreate(NULL,imageView.image.size.width,imageView.image.size.height,

                                                               8,imageView.image.size.width *4,

                                                                colorSpace,kCGImageAlphaPremultipliedLast|kCGBitmapByteOrderDefault);

               CGContextDrawImage(contextRef,CGRectMake(0,0, imageView.image.size.width,imageView.image.size.height), imageRef);

                

               CGContextSetLineWidth(contextRef,4);

               CGContextSetRGBStrokeColor(contextRef,0.0, 0.0, 1.0,0.5);            

                // Draw results on the iamge

            

           NSLog(@" %d \n %d\n %d \n %d",track_window.x,track_window.y,track_window.width,track_window.height);

               NSLog(@"box %@",NSStringFromCGRect(CGRectMake(track_box.center.x,track_box.center.y,track_box.size.width,track_box.size.height)));

                [selfperformSelectorInBackground:@selector(draw1:)withObject:NSStringFromCGRect(CGRectMake(360-track_box.center.y,track_box.center.x,track_box.size.width,track_box.size.height))];

            }

            

           if( select_object && selection.width >0 && selection.height >0 )

            {

               cvSetImageROI( image, selection );

               cvXorS( image,cvScalarAll(255), image,0 );

               cvResetImageROI( image );

            }

            [selfhideProgressIndicator];

    [poolrelease];

    }





    在这里调用这个方法 

    - (void)captureOutput:(AVCaptureOutput *)captureOutput

    didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer

           fromConnection:(AVCaptureConnection *)connection

    {

        [selfCamShiftDetect:[selfimageFromSampleBuffer:sampleBuffer]];、        

    }


    //添加并启动被捉视频,

    - (void)setupCaptureSession

    {

       NSError *error =nil;

        

        // Create the session

        AVCaptureSession *session = [[[AVCaptureSessionalloc]init] autorelease];

        

        // Configure the session to produce lower resolution video frames, if your

        // processing algorithm can cope. We'll specify medium quality for the

        // chosen device.

        session.sessionPreset =AVCaptureSessionPresetMedium;

        

        // Find a suitable AVCaptureDevice

        AVCaptureDevice *device = [AVCaptureDevice

                                  defaultDeviceWithMediaType:AVMediaTypeVideo];//这里默认是使用后置摄像头,你可以改成前置摄像头

        

        // Create a device input with the device and add it to the session.

        AVCaptureDeviceInput *input = [AVCaptureDeviceInputdeviceInputWithDevice:device

                                                                           error:&error];

       if (!input) {

            // Handling the error appropriately.

        }

        [sessionaddInput:input];

        

        // Create a VideoDataOutput and add it to the session

        AVCaptureVideoDataOutput *output = [[[AVCaptureVideoDataOutputalloc]init] autorelease];

        [sessionaddOutput:output];

        

        // Configure your output.

        dispatch_queue_t queue =dispatch_queue_create("myQueue",NULL);

        [output setSampleBufferDelegate:selfqueue:queue];

        dispatch_release(queue);

        

        // Specify the pixel format

        output.videoSettings = [NSDictionarydictionaryWithObjectsAndKeys:

                                [NSNumbernumberWithInt:kCVPixelFormatType_32BGRA],kCVPixelBufferPixelFormatTypeKey,

                                [NSNumbernumberWithInt:360], (id)kCVPixelBufferWidthKey,

                                [NSNumbernumberWithInt:480], (id)kCVPixelBufferHeightKey,

                               nil];

        

        AVCaptureVideoPreviewLayer* preLayer = [AVCaptureVideoPreviewLayerlayerWithSession: session];

        //preLayer = [AVCaptureVideoPreviewLayer layerWithSession:session];

        preLayer.frame =CGRectMake(0,0,360, 480);

        preLayer.videoGravity =AVLayerVideoGravityResizeAspectFill;

        [self.view.layeraddSublayer:preLayer];

        //[self.view addSubview:self.imageView];

        // If you wish to cap the frame rate to a known value, such as 15 fps, set

        // minFrameDuration.

        output.minFrameDuration =CMTimeMake(1,1);

        

        // Start the session running to start the flow of data

        [sessionstartRunning];

        

        // Assign session to an ivar.

        //[self setSession:session];

    }



    代码比较乱没有整理,最后截取要跟踪的物体的小一块,做为目标图片,启动程序就会自动跟踪这个体物体了,并在物体的位置画个圈标记这个物体,速度比较慢,可能是手机处理视频会很慢吧

    展开全文
  • 最近要实现人像扣图的功能,我在网上查到的扣图的方式主要有两种,一种是coreImage 色域,一种是openCv边缘检测 第一种适合纯色背景,扣图精准,第二种,适合复杂背景,但是默认的扣图不精确,如下图

    最近要实现人像扣图的功能,我在网上查到的扣图的方式主要有两种,一种是coreImage 色域,一种是openCv边缘检测
    第一种适合纯色背景,扣图精准,第二种,适合复杂背景,但是默认的扣图不精确,如下图
     
    1.处理前的照片


    2.处理后的照片



    coreImage 网上已经有很多实现了,也有很多文章,我就不多说了,我只把我实现的代码贴出来,代码粘过去就能用,另忘了,导入CubeMap.c

         //coreImage 扣图 createCubeMap(值1,值2)值范围0~360 扣掉值1到值2范围内的颜色

        CubeMap myCube = createCubeMap(self.slider1.value, self.slider2.value);

        NSData *myData = [[NSData alloc]initWithBytesNoCopy:myCube.data length:myCube.length freeWhenDone:true];

        CIFilter *colorCubeFilter = [CIFilter filterWithName:@"CIColorCube"];

        [colorCubeFilter setValue:[NSNumber numberWithFloat:myCube.dimension] forKey:@"inputCubeDimension"];

        [colorCubeFilter setValue:myData forKey:@"inputCubeData"];

        [colorCubeFilter setValue:[CIImage imageWithCGImage:_preview.image.CGImage] forKey:kCIInputImageKey];

        

        CIImage *outputImage = colorCubeFilter.outputImage;

        CIFilter *sourceOverCompositingFilter = [CIFilter filterWithName:@"CISourceOverCompositing"];

        [sourceOverCompositingFilter setValue:outputImage forKey:kCIInputImageKey];

        [sourceOverCompositingFilter setValue:[CIImage imageWithCGImage:backgroundImage.CGImage] forKey:kCIInputBackgroundImageKey];

        

        outputImage = sourceOverCompositingFilter.outputImage;

        CGImage *cgImage = [[CIContext contextWithOptions: nil]createCGImage:outputImage fromRect:outputImage.extent];


    下面我讲一下,ios结合openCv实现扣图的方法

    下载opencv2
    具体怎么IOS下弄opencv 请见我之前写的一贴博客:
    http://blog.csdn.net/wuzehai02/article/details/8439778


    头文件导入下面几个

    #import <opencv2/opencv.hpp>

    #import "UIImage+OpenCV.h"


    UIImage+OpenCV类


    //

    //  UIImage+OpenCV.h


    #import <UIKit/UIKit.h>

    #import <opencv2/opencv.hpp>

    @interface UIImage (UIImage_OpenCV)


    +(UIImage *)imageWithCVMat:(constcv::Mat&)cvMat;

    -(id)initWithCVMat:(constcv::Mat&)cvMat;


    @property(nonatomic,readonly) cv::Mat CVMat;

    @property(nonatomic,readonly) cv::Mat CVGrayscaleMat;


    @end


    //

    //  UIImage+OpenCV.mm


    #import "UIImage+OpenCV.h"


    staticvoid ProviderReleaseDataNOP(void *info,const void *data,size_t size)

    {

        // Do not release memory

        return;

    }




    @implementation UIImage (UIImage_OpenCV)


    -(cv::Mat)CVMat

    {

        

        CGColorSpaceRef colorSpace =CGImageGetColorSpace(self.CGImage);

        CGFloat cols =self.size.width;

        CGFloat rows =self.size.height;

        

        cv::Mat cvMat(rows, cols,CV_8UC4); // 8 bits per component, 4 channels

        

       CGContextRef contextRef = CGBitmapContextCreate(cvMat.data,                // Pointer to backing data

                                                        cols,                     // Width of bitmap

                                                        rows,                    // Height of bitmap

                                                        8,                         // Bits per component

                                                        cvMat.step[0],             // Bytes per row

                                                        colorSpace,                // Colorspace

                                                       kCGImageAlphaNoneSkipLast |

                                                       kCGBitmapByteOrderDefault); // Bitmap info flags

        

       CGContextDrawImage(contextRef, CGRectMake(0, 0, cols, rows), self.CGImage);

       CGContextRelease(contextRef);

        

       return cvMat;

    }


    -(cv::Mat)CVGrayscaleMat

    {

        CGColorSpaceRef colorSpace =CGColorSpaceCreateDeviceGray();

        CGFloat cols =self.size.width;

        CGFloat rows =self.size.height;

        

        cv::Mat cvMat =cv::Mat(rows, cols,CV_8UC1); // 8 bits per component, 1 channel

     

       CGContextRef contextRef = CGBitmapContextCreate(cvMat.data,                // Pointer to backing data

                                                        cols,                     // Width of bitmap

                                                        rows,                    // Height of bitmap

                                                        8,                         // Bits per component

                                                        cvMat.step[0],             // Bytes per row

                                                        colorSpace,                // Colorspace

                                                       kCGImageAlphaNone |

                                                       kCGBitmapByteOrderDefault); // Bitmap info flags

        

       CGContextDrawImage(contextRef, CGRectMake(0, 0, cols, rows), self.CGImage);

       CGContextRelease(contextRef);

        CGColorSpaceRelease(colorSpace);

        

       return cvMat;

    }


    + (UIImage *)imageWithCVMat:(constcv::Mat&)cvMat

    {

        return [[[UIImagealloc] initWithCVMat:cvMat]autorelease];

    }


    - (id)initWithCVMat:(constcv::Mat&)cvMat

    {

        NSData *data = [NSDatadataWithBytes:cvMat.datalength:cvMat.elemSize() * cvMat.total()];

        

       CGColorSpaceRef colorSpace;

        

       if (cvMat.elemSize() == 1)

        {

            colorSpace = CGColorSpaceCreateDeviceGray();

        }

       else

        {

            colorSpace = CGColorSpaceCreateDeviceRGB();

        }

        

        CGDataProviderRef provider =CGDataProviderCreateWithCFData((CFDataRef)data);

        

       CGImageRef imageRef = CGImageCreate(cvMat.cols,                                    // Width

                                            cvMat.rows,                                    // Height

                                            8,                                             // Bits per component

                                            8 * cvMat.elemSize(),                          // Bits per pixel

                                            cvMat.step[0],                                 // Bytes per row

                                            colorSpace,                                    // Colorspace

                                           kCGImageAlphaNone | kCGBitmapByteOrderDefault // Bitmap info flags

                                            provider,                                      // CGDataProviderRef

                                           NULL,                                          // Decode

                                           false,                                         // Should interpolate

                                           kCGRenderingIntentDefault);                    // Intent   

        

       self = [selfinitWithCGImage:imageRef];

       CGImageRelease(imageRef);

        CGDataProviderRelease(provider);

        CGColorSpaceRelease(colorSpace);

        

        return self;

    }


    @end



    好了,上面的都是准备工作,具体的代码其实很简单


        cv::Mat grayFrame,_lastFrame, mask,bgModel,fgModel;

        _lastFrame = [self.preview.imageCVMat];

        cv::cvtColor(_lastFrame, grayFrame,cv::COLOR_RGBA2BGR);//转换成三通道bgr


        cv::Rect rectangle(1,1,grayFrame.cols-2,grayFrame.rows -2);//检测的范围

        //分割图像

        cv::grabCut(grayFrame, mask, rectangle, bgModel, fgModel, 3,cv::GC_INIT_WITH_RECT);//openCv强大的扣图功能


        int nrow = grayFrame.rows;

        int ncol = grayFrame.cols * grayFrame.channels();

        for(int j=0; j<nrow; j++){//扣图,不知道这样写对不对,我也是新手,请大家多多指教

            for(int i=0; i<ncol; i++){

                uchar val = mask.at<uchar>(j,i);

                if(val==cv::GC_PR_BGD){

                    grayFrame.at<cv::Vec3b>(j,i)[0]= '\255';

                    grayFrame.at<cv::Vec3b>(j,i)[1]= '\255';

                    grayFrame.at<cv::Vec3b>(j,i)[2]= '\255';

                }

            }

        }

        cv::cvtColor(grayFrame, grayFrame,cv::COLOR_BGR2RGB); //转换成彩色图片

        _preview.image = [[UIImagealloc] initWithCVMat:grayFrame];//显示结果



    上面的代码测试可用,其实这里最关键的代码是使用了opencv的grabCut 图像分割函数

    grabCut函数的API说明如下:

    void cv::grabCut( InputArray _img, InputOutputArray _mask, Rect rect,

                      InputOutputArray _bgdModel, InputOutputArray _fgdModel,

                      int iterCount, int mode )

    /*

    ****参数说明:

             img——待分割的源图像,必须是83通道(CV_8UC3)图像,在处理的过程中不会被修改;

             mask——掩码图像,如果使用掩码进行初始化,那么mask保存初始化掩码信息;在执行分割的时候,也可以将用户交互所设定的前景与背景保存到mask中,然后再传入grabCut函数;在处理结束之后,mask中会保存结果。mask只能取以下四种值:

                       GCD_BGD=0),背景;

                       GCD_FGD=1),前景;

                       GCD_PR_BGD=2),可能的背景;

                       GCD_PR_FGD=3),可能的前景。

                       如果没有手工标记GCD_BGD或者GCD_FGD,那么结果只会有GCD_PR_BGDGCD_PR_FGD

             rect——用于限定需要进行分割的图像范围,只有该矩形窗口内的图像部分才被处理;

             bgdModel——背景模型,如果为null,函数内部会自动创建一个bgdModelbgdModel必须是单通道浮点型(CV_32FC1)图像,且行数只能为1,列数只能为13x5

             fgdModel——前景模型,如果为null,函数内部会自动创建一个fgdModelfgdModel必须是单通道浮点型(CV_32FC1)图像,且行数只能为1,列数只能为13x5

             iterCount——迭代次数,必须大于0

             mode——用于指示grabCut函数进行什么操作,可选的值有:

                       GC_INIT_WITH_RECT=0),用矩形窗初始化GrabCut

                       GC_INIT_WITH_MASK=1),用掩码图像初始化GrabCut

                       GC_EVAL=2),执行分割。

    */

    参考文章:http://blog.csdn.net/zouxy09/article/details/8534954



    展开全文
  • 现在全景越来越火,既有的设备如日本的理光相机就可以做到拍摄360°全景照片的功能,但是售价也是相当的感人.其实在iPhone手机上我们也可以借助现有的开源库实现这个功能,比如:...1.导入openCV的SDK; 2.添加需要的SDK;
  • 1.OpenCV有专门的iOS平台的包,可以真接下载导入工程,也可以用cmake把OpenCV源码编成.a文件,以静态库的形式导入工程。 2.我这里用的Xcode11,OpenCV用的是最4.20这个版本。 图像转换 1.iOS所支持的图像格式是...
  • IOS开发调用opencv的坑

    2018-05-10 17:30:27
    1,添加opencv.framework后编译报错: exposure_compensate.hpp:66:12: Expected identifier 同样的报错在blender里,解决:点到源代码处把NO改为NO_...opencv2/highgui/cap_ios.h&gt; 改为 #import ...
  • OpenCV是用C和C++语言写的,这种类似cv::Mat都是C++的写法,然而.m文件是不支持C++的,这时候就需要我们把文件的后缀名改成.mm。改完编译就会发现错误消失。 2、在控制器里引用文件 紧接着第二个错误就出来了。 ...
  • IOS开发中使用 openCV

    2013-05-10 17:40:55
    1. 介绍 2. 示例项目 3. 在自己的项目中使用OpenCV框架 ...4. 重建OpenCV框架 ... 2011-11-28 OpenCV框架已经使用opencv的svn修订版7017重建: Check out 第2部分of our series on computer v
  • 1.OpenCV有专门的iOS平台的包,可以真接下载导入工程,也可以用cmake把OpenCV源码编成.a文件,以静态库的形式导入工程。 2.我这里用的Xcode11,OpenCV用的是最4.20这个版本。 3.这里用到的人脸检测是OpenCV官方给的...
  • iOS平台配置OpenCV

    2017-04-06 07:11:53
    ##### 第一种方法 ##### 在学习处理图片时,无意间接触到OPenCV,记录iOS平台下配置OPenCV的过程。...最新的OpenCV for IOS,只需导入opencv2.framework框架,使用时导入相应的头文件即可。二、新
  • Opencv For IOS

    2016-09-09 14:16:45
    opencv2.framework如下导入方式 其他 .framework如下方式导入 导入framework后如下图所示 Step 3: 下图1的位置将.m文件改为.mm文件 Step 4: 添加protocol 这个delegate可以用来出来获取的视频图
  • ios导入opencv教程 问题:ld: 1 duplicate symbol for architecture x86_64 这个是说有什么重复的符号,直接根据下图框出来的文件去找就行了 我是写了两个main函数 参考该处 ...
  • 首先,笔者是刚大四在一家做OCR的公司里实习的小白一枚,日前公司需要给客户开发一款IOS的OCR软件,自然少不了前处理,于是笔者爬遍了帖山书海,发现OPENCV是一款不错的开源框架,便拿来做前处理用,但配置过程对于...
  • OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言...
  • 在mac os10.11.6下使用xcode8.2+opencv3.2的时候,导入#import 会报一个错,Parse issue Expected identifyer ,将NO改为 NO_EXPOSURE_COMPENSATOR
  • 前言OpenCV ,是一个开源的跨平台计算机视觉和机器学习库,通俗点的说,就是他...导入工程导入 OpenCV 到 Xcode 的工程中还是比较简单的,从官网下载对应的 framework,直接丢到 Xcode 的工程中,然后在你想用 OpenC...
1 2 3 4 5 ... 20
收藏数 1,327
精华内容 530
热门标签
关键字:

ios 导入opencv