UE4开发语言,编译 ue4
先来看看opencv4的新特性!1.opencv在开发之初的语言是C,很多模块无法利用C 11的好特性,所以从OpenCV1.x开始很多C风格的API就被扼杀了.历史上好像就是这样,学OpenCV总是要的。因此,最好从最新版本开始。
2.核心模块中的持久性(用XML、YAML或JSON存储和加载结构化数据)已经完全用C重新实现,这意味着告别C风格的API。目前还没有完成base64支持(只支持加载base64编码的XML和YAML,不支持编码)。你用过OpenCV中的ML模块吗?以后加载存储会快很多!
3.现在编译OpenCV的新版本需要一个支持C 11的编译器。
4.扩展了C 11的标准库,以后就没有cv:String和cv:Ptr了。现在,对FileNode中存储的序列的随机访问是O(N)运算;使用cv : FileNodeIterator使顺序访问更快。
最重要的是OpenCV更新的DNN(深度神经网络)模块!
1.增加预测支持Mask-RCNN模型。
用户指南:3359 github . com/opencv/opencv/wiki/tensor flow-object-detection-API Python示例:3359github.com/opencv/opencv/blob/master/samples/dnn/mask _ rcnn . py2 .集成ONNX解析器。支持多种流行的分类网络。支持一些YOLO对象检测网络(YOLO的ONNX版本缺少一些提供矩形列表的最终层)。
3.通过引入英特尔DLDT提高DNN模块的速度。不过这对于一般的开发者来说并没有太大的影响。
英特尔DLDT最近已经开源,请参见:
https://software.intel.com/openvino-toolkit
4.这篇文章对开发者有很大的相关性。DNN模块输入张量数据的API变化。默认情况下,blobFromImage方法不会交换R和B通道,也不会裁剪输入图像。而且,这个API的变化也被加入到OpenCV 3.4分支中。
5.如果OpenCL不支持,可以使用Vulkan后端。(正在开发中.)
6.添加了OpenCV支持的最流行的深度学习网络的快捷方式。您可以通过指定模型的别名来跳过预处理参数,甚至是模型的路径。
past:python object _ detection . py-model opencv _ face _ detector . caffe model-config opencv _ face _ detector . proto txt-mean 104 177 123-width 300-height 30 0刚才可以键入:python object _ detection . pyopencv _ fd7。修正了AMD和NVIDIA GPU上的OpenCL加速。只是提醒一下,不需要配置太多。但是,不用英特尔GPU不好吗?
这里不得不提一下,新模块G-API模块!
Opencv_gapi是一个新增加的模块,是一个非常有效的图像处理引擎。开发人员可以在程序中定义一个由多个图像处理步骤组成的图,并在执行过程中对其进行优化,使其快速可移植。
Gapi使用示例:
# include opencv 2/video io . HPP # include opencv 2/high GUI . HPP # include opencv 2/gapi . HPP # include opencv 2/gapi/core . HPP # include opencv 2/gapi/imgproc . HP pint main(int argc,char * argv[]){ cv:video capture cap;if(argc 1)cap . open(argv[1]);else cap . open(0);CV _ Assert(cap . iso pened());cv:GMat in;cv:GMat VGA=cv:gapi:resize(in,cv:Size(),0.5,0.5);cv:GMat gray=cv:gapi:bgr 2 gray(VGA);cv:GMat模糊=cv:gapi:blur(灰色,cv:Size(5,5));cv:GMat edges=cv:gapi:Canny(模糊,32,128,3);cv:GMat b,g,r;std:tie(b,g,r)=cv:gapi:split 3(VGA);cv:GMat out=cv:gapi:merge3(b,g edges,r);cv:GComputation ac(in,out);cv:Mat输入_帧;cv:Mat输出_帧;CV _ Assert(cap . read(input _ frame));do { ac.apply(input_frame,output _ frame);cv:imshow(output ,output _ frame);} while(cap . read(input _ frame)cv:wait key(30)0);返回0;}所有性能提升,各种优化。这一条和开发商关系很大。自己编译OpenCV源代码时,加入CPU_BASELINE=AVX2可以获得比原来15 ~ 30%的速度提升。请收藏此技能。
同时在objdetect模块中加入了二维码的检测和解码。这个时代手机App的这个技能只能说是标配。
参考:3359github.com/opencv/opencv/blob/master/samples/CPP/QR代码. cpp3D物体扫描和模型创建流行算法Kinect融合算法已经实现并集成到rgbd模块中。
非常高效和高质量的DIS密集光流算法已经从opencv_contrib转移到opencv/video模块。
例如:3359github.com/opencv/opencv/blob/master/samples/CPP/dis光学流
一、源码下载可能有人会说:源码下载还有什么好说的?其实很多朋友在下载源代码的第一步就犯了错误:扩展模块和主版本不匹配。
访问github上opencv的主页:https://github.com/opencv
如下所示(图1):
注意上面两个箭头指向哪里,重点是“opencv”和“opencv_contrib”
点击箭头“1”的“opencv”标签进入下一页,如图2所示:
注意箭头所指的地方。进入页面后,默认版本是‘主’。我们要的是‘opencv 4.0’。
点击如图所示的小三角形(图3):
点击“标签”标签,选择“4.0”,如下图所示(图4):
目前的源代码是“opencv4.0”。点击“克隆或下载”开始下载(opencv4.0源代码主版本)
然后回到https://github.com/opencv, opencv的首页,如上图(图1)所示,点击箭头2所指的标签“opencv_contrib”。
参见下图(图5):
同样,按照上面的箭头顺序选择“4.0.0”后,点击“克隆或下载”,下载“opencv4.0.0”的扩展模块
此时,下载完所有源代码后,分别解压两个压缩包。
另外,编译CV400时,建议选择3.12以上的cmake软件版本。如果版本低,可能会有问题。我用的是CMAKE的3.12.4版本。
二、使用cmake生成OpenCV源代码项目在Cmake之前,先关闭Visual Studio(如果正在运行)
1.选择源代码路径和生成路径,如图所示,然后单击“配置”
A.这里注意路径生成,保证该路径所在磁盘的剩余空间大于18G,
因为cmake生成的项目是用VS编译的,最后总文件有17 G多,踩了这个坑。
B.路径不能有中文。
2.选择编译器,如图所示
无论生成的库是32位还是64位,都有以下选择:
32位程序兼容性好,64位速度快。考虑到兼容性,大多数人选择32位。单击“完成”开始配置。
首次配置通常需要几分钟时间。出现“配置关闭”后,如图所示:
要编译扩展模块,请添加扩展模块源代码的路径"./modules ",用于" OPENCV_EXTRA_MODULES_PATH "
如果SURF将在项目中使用,检查“OPENCV_ENABLE_NONFREE”选项。
如果选择了“BUILD_opencv_world ”,则最后一个库是一个文件,如“opencv_world400.dll”
如果第一次配置不成功,一般是网络不好,有些东西是不下载的,特别是代表单位网络的时候。
可以阅读窗口中红色文字提示读取日志文件,并根据其提示下载复制(不易成功!首选网络)。
第二次点击“配置”,持续几分钟。再次出现“配置关闭”后,单击“生成”以生成项目。
一般这里没什么问题。几分钟后,出现“向下生成”并成功。
三。编译Opencv项目,在库走之前生成cmake中生成的头文件和目录,找到 Opencv.sln ,如图
打开项目后,点击菜单栏中的生成-批量生成,如图。
如图所示,选中所有四个复选框,然后单击“Generate”一次性生成它们。
大概半个小时,如下图,就成功了。
查看目录。
“include”、“lib”、“敏感的小蚂蚁”是我们编程需要的文件。
总而言之:
1.下载完两个源代码后,cmake选择源代码路径和生成路径。
配置两次(第一次配置后,选择扩展模块的源路径),
初级生成
2.打开项目后,选择“CMake Targets”下的“安装”-“生成”
大部分朋友编译不成功的原因主要有三个:
1.扩展模块与主源代码不匹配。
2.2.cmake的时候不要有中国路径。
这里说一个观点:作为程序员,你在开发的时候本能的不使用中文,即使使用拼音,否则也会出现很多意想不到的bug。
3.网络不好,cmake期间由于无法连接服务器导致部分文件无法下载。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。