iOS开发中GUPImage抠除绿幕视频
最近接到一个需求,需要将一个绿幕视频的绿幕背景抠成透明色。并将其加到摄像机镜头上。 1234567891011121314151617181920212223242526272829303132333435NSString *path = [DownLoadTool getFileWithName:[DataManage getObjectForKey:[self.uuid stringByAppendingString:@"-ar"]]]; NSURL *mediaURL = [NSURL fileURLWithPath:path]; self.item = [AVPlayerItem playerItemWithURL:mediaURL]; self.myPlayer = [AVPlayer playerWithPlayerItem:self.item]; [self.myPlayer seekToTime:kCMTimeZero]; self.movieGreen = [[GPUImageMovie alloc]...
iOS-opencv对比两个图的相似度
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677#include <opencv2/opencv.hpp>#import "OpenCVTool.h"using namespace std;using namespace cv;const float inlier_threshold = 2.5f; // Distance threshold to identify inliers with homography checkconst float nn_match_ratio = 0.8f;+(BOOL)checkImage:(NSString *)path1 withImage:(NSString *)path2{ const char * cpath = [path1...
Xcode-10-2-1与swift的一个大坑
问题描述: 同一套代码在debug模式下运行良好,在release下有些方法(我遇到的是代理方法)不运行。(Xcode10.2.1)换一个低版本Xcode版本后release后又能正常跑。 问题原因:代理方法定义的时候用来@objc标签如 @objc optional func collectionViewExcuteDelete(fadeView: UIView, completion: () -> Void) 解决方式:在声明这些代理方法的时候需要加上@objc标签,否则release状态下无法调用改该方法。@objc func collectionViewExcuteDelete(fadeView: UIView, completion: () -> Void) { print("ExcuteDelete") } 调试技巧在Xcode中可以切换运行环境如图
iOS多语言本地化动态修改宏定义脚本(oc版)
在开发多语言的时候时候,每次都需要NSLocalizedString(o, nil)显得很麻烦。经过一番搜索发现有大神写了swift版的脚本。地址在这我依葫芦画瓢写了一下oc版的。使用方法请移步大神博客看一下。 12345678910111213141516Localizable.strings文件路径localizableFile="${SRCROOT}/${PROJECT_NAME}/Base.lproj/Localizable.strings"touch $localizedFile# 生成的文件路径(根据个人习惯修改)localizedFile="${SRCROOT}/${PROJECT_NAME}/LocalizedUtils.h"# 将localizable.strings中的文本转为变量入一个临时文件sed "s/\" = \".*$/;/g" ${localizableFile} |...
weex笔记(10)weexstudio调试-监听本地编译文件并自动刷新界面
weexStudio下载地址 安装weexlistener安装命令npm install weexlistener -gweexlistener用于监听本地文件,并建立一个websocket。端口号固定为29998。也可以自己写代码监听这个端口 安装concurrently在工程目录下安装命令 npm install concurrently -g用于npm同时执行两个命令 在安卓或者iOS代码中监听本地websocket端口29998iOS代码: 1234NSURL *socketURL = [NSURL URLWithString:[NSString stringWithFormat:@"ws://%@:%@", ip, @"29998"]]; self.hotReloadSocket = [[SRWebSocket alloc] initWithURL:socketURL protocols:@[@"echo-protocol"]]; self.hotReloadSocket.delegate...
weex笔记(11)-waterfall中refresh不能加载问题
使用weexplayground (weexsdk0.20.1) ios版本扫描下面两个二维码第一个不可以下拉,第二个可以下拉http://dotwe.org/vue/1d4bce6a5a3c455918fd2cb8c710d658http://dotwe.org/vue/579e9bf06f53af66edff1c9f99a58cbd而两者的差别 仅仅在于数据源数量不同。第一个cell元素没有超过屏幕,第二个cell超过了屏幕。希望能尽快修复。安卓上并没有发现这个bug 我自己找到了解决办法,在sdk源码WXRecyclerComponent.mm中_collectionView.delegate = self;下方添加一句 _collectionView.alwaysBounceVertical = self;即可解决不过不够严谨,如果waterfall横向就不能这么写了,希望官方能尽快修复。
weex笔记(12)-weex官网隐藏的插件大全
直接附上地址 音频插件文件上传插件二维码插件等等。。。很多实用插件。点击相应的html就能查看使用方法,我还没有验证过是否有用,有需要的自己去试试吧。
weex笔记(1)weex提升编译速度
每次weex编译都会卡在asset optimization 94% 最新新版本weex-toolkit 脚手架会不会有这问题。 老版本需要做如下修改 webpack.dev.conf.js 文件中修改html-webpack-plugin为html-webpack-plugin-for-multihtml 1const HtmlWebpackPlugin = require('html-webpack-plugin-for-multihtml'); 并在声明HtmlWebpackPlugin的地方加上multihtmlCache: true 123456789101112131415161718const generateHtmlWebpackPlugin = (entry) => { let entrys = Object.keys(entry); // exclude vendor entry. entrys = entrys.filter(entry => entry !== 'vendor' );...
weex笔记(2)weex使用navigator跳转到bundle中js
路径获取:官方地址 123456789101112131415161718192021222324252627282930exports.getBaseURL = function (vm) { var bundleUrl = weex.config.bundleUrl; var nativeBase; var isAndroidAssets = bundleUrl.indexOf('your_current_IP') >= 0 || bundleUrl.indexOf('file://assets/')>=0; var isiOSAssets = bundleUrl.indexOf('file:///') >= 0 && bundleUrl.indexOf('WeexDemo.app') > 0; if (isAndroidAssets) { nativeBase = 'file://assets/';...
weex笔记(3)weex使用iconfont
iconfont 优势较小资源包替代app中icon等减小App包,一个font.ttf文件解决多端icon尺寸问题。可以加载本地和网络ttf,具体写法 123456789101112131415161718192021initIconfont() { let dom = weex.requireModule('dom'); //通过获取platform判断加载字体文件的路径,(待完善,在手机的playground中,是无法加载本地文件的) let platform = weex.config.env.platform.toLowerCase(); let url; if ( "android" == platform) { //本地资源采用'local:// '的方式加载 ...