GITHUB:https://github.com/endpang/opencvdemo
实现了寻找边缘和自定义上色。
- 添加opencv.framework后编译报错
Expected identifier
解决办法
把 NO 改为 NO_EXPOSURE_COMPENSATOR = 0
- opencv 依赖的库
libc++.tbd AVFoundation.framework CoreImage.framework CoreGraphics.framework QuartzCore.framework Accelerate.framework //摄像头 CoreVideo.framework CoreMedia.framework AssetsLibrary.framework
#import "ViewController.h" #import <opencv2/opencv.hpp> #import <opencv2/videoio/cap_ios.h> //@interface ViewController () @interface ViewController ()<CvVideoCameraDelegate>{ UIImageView *cameraView; CvVideoCamera *videoCamera; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. cameraView = [[UIImageView alloc] initWithFrame:self.view.frame]; [self.view addSubview:cameraView]; videoCamera = [[CvVideoCamera alloc] initWithParentView:cameraView]; videoCamera.defaultAVCaptureDevicePosition = AVCaptureDevicePositionFront; videoCamera.defaultAVCaptureSessionPreset = AVCaptureSessionPreset1920x1080; videoCamera.defaultAVCaptureVideoOrientation = AVCaptureVideoOrientationPortrait; videoCamera.defaultFPS = 60; videoCamera.grayscaleMode = NO; videoCamera.delegate = self; } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [videoCamera start]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [videoCamera stop]; } #pragma mark - CvVideoCameraDelegate - (void)processImage:(cv::Mat&)image { //在这儿我们将要添加图形处理的代码 cv::Mat image_copy; //首先将图片由RGBA转成GRAY cv::cvtColor(image, image_copy, cv::COLOR_BGR2GRAY); //反转图片 cv::bitwise_not(image_copy, image_copy); //将处理后的图片赋值给image,用来显示 cv::cvtColor(image_copy, image, cv::COLOR_GRAY2BGR); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. }
plist 里加入 Privacy – Camera Usage Description
服务器端代码
8000 端口的服务是 https://github.com/lllyasviel/style2paints
k.png 是一张纯白色 png
<?php /**/ //print_R($_FILES); $imgname = $_FILES['upload1']['name']; $tmp = $_FILES['upload1']['tmp_name']; $filepath = 'photo/'; if(move_uploaded_file($tmp,$filepath.$imgname)){ //echo "上传成功"; my_post($filepath.$imgname); }else{ echo "上传失败"; } //*/ //my_post("photo/20180118172008.png"); function my_post($filename){ $url = "http://172.18.100.205:8000/paint"; $headers[] = 'Origin: http://172.18.100.205:8000'; $headers[] = 'Accept-Encoding: gzip, deflate'; $headers[] = 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8'; $headers[] = 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'; $headers[] = 'Content-Type: application/x-www-form-urlencoded;'; $headers[] = 'Accept: */*'; $headers[] = 'Referer: http://172.18.100.205:8000/'; $headers[] = 'Cookie: scale=2; style=photo; noise=2'; $headers[] = 'Connection: keep-alive'; //$post_data = array ("username" => "bob","key" => "12345"); $ch = curl_init(); $post_data = []; $post_data["sketchDenoise"] = "true"; $post_data["resultDenoise"] = "true"; $post_data["algrithom"] = "quality"; $post_data["method"] = "colorize"; $post_data["sketchID"] = "new"; $post_data["referenceID"] = "no"; //$b6 = "data%3Aimage%2Fpng%3Bbase64%2C"; $b5 = "data:image/jpeg;base64,"; $b6 = "data:image/png;base64,"; //echo base64_encode($b6); $post_data["hint"] = $b6.base64_encode(file_get_contents("k.png")); $post_data["reference"] ="null" ;//$b6.base64_encode(file_get_contents("108_copy.png")); //$post_data["reference"] = null; $post_data["sketch"] = $b6.base64_encode(file_get_contents($filename)); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // post数据 curl_setopt($ch, CURLOPT_POST, 1); // post的变 //echo $post_data["sketch"]; //print_R(http_build_query($post_data)); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data)); $output = curl_exec($ch); $out_array = explode('*',$output); curl_close($ch); echo "http://172.18.100.205:8000/results/".$out_array[0].".jpg"; //print_R($output); }
No module named ‘skimage’ (python3)
apt install . python3-skimage