完全混淆了在openCV中更改代码的位置

在以下链接中,它给出了如下图所示的结果

https://github.com/BloodAxe/opencv-ios-template-project/downloads

http://aptogo.co.uk/2011/09/opencv-framework-for-ios/

我将代码更改为

COLOR_RGB2GRAY to COLOR_BGR2BGRA it give me a error says "OpenCV Error: Unsupported format or combination of formats () in cvCanny" (or) CGColorSpaceCreateDeviceGray to CGColorSpaceCreateDeviceRGB 

我完全混淆在哪里更改代码…我需要输出为“白色与黑色线条”而不是“黑色与灰色线条请指导我 在此处输入图像描述 非常感谢提前

在OpenCVClientViewController.mm中包含此方法(从https://stackoverflow.com/a/6672628/复制),然后将转换图像,如下所示:

 -(void)inverColors { NSLog(@"inverColors called "); // get width and height as integers, since we'll be using them as // array subscripts, etc, and this'll save a whole lot of casting CGSize size = self.imageView.image.size; int width = size.width; int height = size.height; // Create a suitable RGB+alpha bitmap context in BGRA colour space CGColorSpaceRef colourSpace = CGColorSpaceCreateDeviceRGB(); unsigned char *memoryPool = (unsigned char *)calloc(width*height*4, 1); CGContextRef context = CGBitmapContextCreate(memoryPool, width, height, 8, width * 4, colourSpace, kCGBitmapByteOrder32Big | kCGImageAlphaPremultipliedLast); CGColorSpaceRelease(colourSpace); // draw the current image to the newly created context CGContextDrawImage(context, CGRectMake(0, 0, width, height), [self.imageView.image CGImage]); // run through every pixel, a scan line at a time... for(int y = 0; y < height; y++) { // get a pointer to the start of this scan line unsigned char *linePointer = &memoryPool[y * width * 4]; // step through the pixels one by one... for(int x = 0; x < width; x++) { // get RGB values. We're dealing with premultiplied alpha // here, so we need to divide by the alpha channel (if it // isn't zero, of course) to get uninflected RGB. We // multiply by 255 to keep precision while still using // integers int r, g, b; if(linePointer[3]) { r = linePointer[0] * 255 / linePointer[3]; g = linePointer[1] * 255 / linePointer[3]; b = linePointer[2] * 255 / linePointer[3]; } else r = g = b = 0; // perform the colour inversion r = 255 - r; g = 255 - g; b = 255 - b; // multiply by alpha again, divide by 255 to undo the // scaling before, store the new values and advance // the pointer we're reading pixel data from linePointer[0] = r * linePointer[3] / 255; linePointer[1] = g * linePointer[3] / 255; linePointer[2] = b * linePointer[3] / 255; linePointer += 4; } } // get a CG image from the context, wrap that into a // UIImage CGImageRef cgImage = CGBitmapContextCreateImage(context); UIImage *returnImage = [UIImage imageWithCGImage:cgImage]; // clean up CGImageRelease(cgImage); CGContextRelease(context); free(memoryPool); // and return self.imageView.image= returnImage; } // Called when the user changes either of the threshold sliders - (IBAction)sliderChanged:(id)sender { self.highLabel.text = [NSString stringWithFormat:@"%.0f", self.highSlider.value]; self.lowLabel.text = [NSString stringWithFormat:@"%.0f", self.lowSlider.value]; [self processFrame]; } 

请检查图像