open

阅读 / 问答 / 标签

open your yes !IT i,showtime,是什么意思?

Open your eyes!It"s showtime.睁开你的眼,现在是表演时间。

把open。rain。sea。tow。three。这些词加减或更换一个字母变成新词

oen rainy stea how tree

open jaw是什么意思 简单点

(机票)开口的;不同点进出的

Tiger opened his jaws wide.这句话中,下巴jaw为什么要加s老虎双下巴?

……

香港会计科目OPENING STOCK-RM/WIP是什么意思

我来回答:opening stock 期初存货;RM:raw material 的缩写,就是“原材料”;WIP:working in progress的缩写,就是大陆的“在产品”。在香港的部分企业中,存货管理采用实地盘点制,每月先将上月存货的金额转入

一个canopen的pdo中最多包含多少byte的数据

数据长度 0--8 字节,要注意的是PDO报文在发送出去后不需要反馈信号。

我想问一下canopen pdo通信方式的触发模式有哪几种呢?

感谢题主的邀请,我来说下我的答案,依我看来,CANopen PDO通信方式有三种触发模式,分别为:内部事件驱动或内部定时器触发、同步触发、远程请求触发。一、 内部事件驱动或内部定时器触发。通讯由某一事件触发。例如数字 I/O 口状态改变,超过预先设定的值、定时器中断等都会触发节点发送一个 PDO。这种模式可使总线负载达到最小,在相对低的波特率下获得比较高的通讯特性。二、同步触发。同步触发 PDO 是指 CANopen 节点收到由管理节点发出的同步报文(同步对象 Sync)之后,根据触发报文条件向总线发出 PDO 报文。同步传输又分为周期性和非周期性,周期性是指 CANopen 节点接收到一定数量的同步报文之后才开始发送;非周期性 PDO 是指 PDO 触发条件成立之后,当收到下一个同步对象后马上发送PDO。三、 远程请求触发。PDO 消费者可以给 PDO 生产者发送远程 PDO 请求,相应 PDO 生产者将对远程帧做出响应,向总线上发送相应的 PDO 数据。如果你还想了解更多有关这方面的信息的话,请网上询问广成科技。采纳下啊!

Swagger 2与OpenAPI 3

重命名 swagger: 2.0 openAPI: 3.0.0 Swagger 2.0 基础URL结构 OpenAPI 3.0 基础URL结构 我们可以定义一个基础url,通过{}里面装载变量值(类似于路径模版),在使用时,通过variables属性可以定义变量值,当然也可以给定默认值 Swagger 2中的definitions概念在OpenAPI 3中标准化为【组件】,可以在多个地方重复使用且可定义,组件列表如下: Swagger 2 Swagger 2最容易混淆的方面之一是body / formData。它们是参数的子集,只能有一个或另一个,如果你使用body,格式与参数的其余部分不同(只能使用body参数,名称不相关,格式不同,等等) OpenAPI 3 现在,body已经被移入了它自己的叫做requestBody的部分,并且formData也已经被合并到里面。另外,cookies已经被添加为参数类型(除了现有的标题,路径和查询选项之外)。 requestBody有很多新的功能。现在可以提供example(或数组examples)for requestBody。这是非常灵活的(你可以传入一个完整的例子,一个参考,甚至是一个URL的例子)。 新的requestBody支持不同的媒体类型(content是一个MIME_Types的数组,像application/json或者text/plain,当然你也可以用 / 捕捉所有)。 对于参数,你有两个选择你想如何定义它们。你可以定义一个“模式”(像原来2.0那样),可以尽情地描述项目。如果更复杂,可以使用“requestBody”中的“content”。 通配符的出现,我们可以以“4XX”来定义响应,而不必单独定义每个响应码。 响应和响应头可以更复杂。可以使用“content”对象(如在请求中)的有效载荷。 链接是OpenAPI 3最有趣的补充之一。它有点复杂,但可能非常强大。这基本上是描述“下一步是什么”的一种方式。 比方说,你得到一个用户,它有一个addressId。这addressId本身是无用的。您可以使用链接来展示如何“扩大”,并获得完整的地址。 在“/ users / {userId}”的响应中,我们找回了一个addressId。“链接”描述了如何通过引用“$ response.body#/ addressId”来获取地址。 另一个用例是分页。如果要获取100个结果,links可以显示如何获得结果101-200。它是灵活的,这意味着它可以处理任何分页方案limits来cursors。 Swagger 2 OpeanAPI 3 一堆安全性的变化!它已被重命名,OAuth2流名已更新,您可以有多个流,并且支持OpenID Connect。“基本”类型已被重命名为“http”,现在安全可以有一个“方案”和“bearerFormat”。 飞机票至 Swagger 2 https://blog.readme.io/an-example-filled-guide-to-swagger-3-2/ https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#oasDocument https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#componentsObject

mentor 提示unable to open iCDB connection 打不开工程?怎么破

你开了防火墙,Dxdesigner等 打开工程时首先要连接internet,如果发现你放火墙给禁了,就会出现那样的。! M% H. P j! j% b4 [, B/ n8 ?+ Y" g2 |5 S9 w) M+ L$ V. z, XMentor 并非省油的灯,也许这就是他们检测是否用盗版的后门。% z" Q! Q7 T6 A! }6 o$ T: Y但是你如果把放火墙打开,把物理的网断了,是可以运行的。

超级高分求shaft opening的意思..

The shaft opening of motor is not waterproof or oil-proof. Do not install the motorwhere harmful gases or liquid are present, or in an environment containing excessivemoisture or water vapor.马达出轴端结构并非具防水性,亦不具防油性。因此,请勿使用及安装伺服马达於有水滴、油性液体或过度潮湿之场所和具腐蚀及易燃性气体之环境。

openvox忘记密码

1、首先将open手机强制关机。2、其次进入rec系统,使手机清除所有数据。3、最后恢复出厂设置即可解除openvox密码。

C++文件处理函数open的参数ios::trunc使用时 如果要打开的文件不存在怎么办?

opening modeapp (append) Set the stream"s position indicator to the end of the stream before each output operation.ate (at end) Set the stream"s position indicator to the end of the stream on opening. binary (binary) Consider stream as binary rather than text.in (input) Allow input operations on the stream.out (output) Allow output operations on the stream.trunc (truncate) Any current content is discarded, assuming a length of zero on opening.以上是参考资料,以下回答你的问题ios::trunc 如果文件存在 则清除其内容,如果文件不存在是不是就不起作用 还是会报错?这个,你做一个简单的编程验证就可以了,我也不确定,但是验证确实很简单。P.S.请问ios::in|ios::out和ios::in|ios::out|ios::trunc有什么区别?ios::in|ios::out是打开一个文件,同时允许读与写ios::in|ios::out|ios::trunc是打开一个文件,同时允许读与写,并在打开时把当前内容清空

JCG路由器支持刷入如DDWRT/OpenWRT之类的第三方固件吗

概念有误。刷第三方高效能刷件,并不是以有限或无线路由器区分,是按照路由器电路中的主芯片来划分固件的版本;只是有线路由器(电信级设备除外),配置过低,型号太旧,不在第三方固件开发者的关注范围内;如果满意,请给分!

SecureCRT 连接时提示 Unable to open serial port COM2 是怎么回事,电脑没连路由和交换机,就一台电脑

SecureCRT连接时提示:Unable to open serial port COM2,是设置错误造成的,解决方法如下:1、首先在电脑中,打开SecureCRT软件,如下图所示。2、进入软件页面后,点击下图所示位置。3、然后在打开的窗口中,选择协议为Serial,如下图所示。4、端口就选择电脑的COM口,如果不知道你电脑的COM口,可以进入连接查看。波特率建议选择9600。5、设置完成后,点击页面下方的连接就可以了。

OMS的OMS(Open Mobile System)简介

Open Mobile System是中国移动通讯集团参照Google开发的一款基于Linux内核Android平台构建的开放式手机操作系统简称OMS,它在Android平台基础上改了主题,并加入了中移动运营的3G网络TD-SCDMA的支持。Open Mobile System是2008年4月份开始的一个系统定制计划,经过1年的修改调试后在2009年4月份开始正式推向市场,同时首款使用oms系统的是联想oPhone手机,结果导致oPhone用户大量刷机。如今官方称“OMS2.5完全兼容android2.2。用户体验得到了很大的提升,已经达到或者超越android原生系统。”

android skia与opengl es 都可以画2d图吗

从Honeycomb[3.x]版本起,Andorid便支持GPU加速,但目前Android并没有使用Skia GPU进行Webkit渲染。Skia GPU使用OpenGL进行后台加速渲染,未来也许会代替Skia。很多人觉得,即使Android成功使用了GPU加速Webkit渲染,在访问浏览如雅虎等一般的网站时,用户也感觉不到太大的差异。因为Webkit的资源大多数消耗在了Javascript脚本和布局定位上。我们觉得Webkit使用GPU加速渲染的最大意义无非是HTML5 Canvas[HTML5的动态绘图效果]。Android渲染Canvas动画实在太慢,导致Web开发者根本无法在Android上用Canvas开发网页游戏[要注意的是,目前很多手机和平板的应用程序以HTML5做为界面,并使用Webkit工作,这也是很多应用在Android系统上感觉“不流畅”的重要因素。译者注]。Android Webkit开发平台[NDK]使用Skia GPU加速测试我们对Android系统使用Skia GPU加速的Webkit进行了测试。我们手上已经有Android Webkit NDK的WAC2.0版本,我使用了某个提交版本的Skia源码,并开启Skia GPU加速将其编译进NDK中。我并没有使用Canvas加速,因为这还要增加修改GraphicsContextSkia API的工作,所以并未测试Canvas渲染的性能。

改革开放的名词有2个翻译,一个是reform and open-up,另一个是reform and opening-up,有什么不同点

第一个是吧改革和开放都作为动词解释第二个是把两个连在一起作为名词,也就是我们所熟知的改革开放

reform and opening-up一定要加连字符吗?

您好,opening–up意思是“开放”,它是一个完整的单词,因此中间要加连字符(–)。希望对您有帮助。如扰见谅。

open minded什么意思

Open Minded思想开明;思想开放的

i am open minded 中mind为什么要加ed

open-minded 为合成词,意为: 愿意考虑不同意见的,思想开明的

open minded是什么意思

打开注意请采纳

kind-hearted和open-minded什么意思?

kind-hearted ["kaind"hɑ:tid]基本翻译adj. 仁慈的;好心肠的网络释义kind-hearted:好心的|仁慈的,好心肠的|心地慈祥的Heaven never lets the kind-hearted down:皇天不负好心人open-minded基本翻译adj. 虚心的, 思想开明的网络释义open-minded:虚心的|虚心的,思想开明的|开明的,开放的unchained open-minded:开放的思想没有束缚在open-minded / cheerful:开朗的

Python+PIL Image.open(sys.argv[1])老出错

cat test.sh看一下

python引入PIL做验证码出现错误:OSError: cannot open resource

这是因为你写的验证码代码找不到当前服务器字体,验证码代码中是不是有一行代码Font = (“字体路径”),windows和mac的路径是不同的,,你要注意这一点。。下面这是mac的font = ImageFont.truetype("/Library/Fonts/Andale Mono.ttf", 23)mac默认路径在/Library/Fonts/,,window好像可以直接写字体font = ImageFont.truetype("arial.ttf", 25),自己粘一下就好

外国人说open minded指什么

open minded是思想开明; 思想开放的意思,外国人说这句话是想让你持开放态度。心态阳光,开心快乐过好每一天。

open-minded是什么意思

外向的,思想开放的

为什么用Python的openCV读取图片与PIL读取的图片像素值会不一样?

的确是不一样的。以下是我用两种方法对一张图片做的差值。解决方案暂时没有想到。建议还是只用一种读取方式。[[[254 1 0][254 1 0][254 1 0]...[ 0 0 4][ 0 255 3][ 0 0 1]] [[ 0 0 0][255 1 0][ 0 0 0]...[ 0 255 2][ 0 255 2][255 1 0]] [[ 0 0 0][254 0 1][ 0 0 0]...[ 0 0 2][ 0 255 2][ 0 0 0]] ... [[ 0 0 0][ 0 0 0][ 0 0 0]...[ 0 0 0][ 0 0 0][ 0 0 0]] [[ 0 0 0][ 0 0 0][ 0 0 0]...[ 0 0 0][ 0 0 0][ 0 0 0]] [[ 0 0 0][ 0 0 0][ 0 0 0]...[ 0 0 0][ 0 0 0][ 0 0 0]]]

如何获取opengl细分着色器的计算结果

  细分曲面过程并不对OpenGL典型的几何图元(点、线和三角形)进行操作,而是使用一个新的图元(在OpenGL 4.0版本中新增的),称为patch。patch由流水线中所有活动的着色阶段处理。相比起来,其它图元类型仅仅被顶点、片段和几何着色器处理,而旁通细分曲面阶段。实际上,如果有任一细分曲面着色器是活跃的,那么传递任何其它几何类型会产生一个GL_INVALID_OPERATION错误。相反地,如果企图渲染一个patch而没有任何细分曲面着色器(明确地说是一个细分曲面计算着色器;我们会看到细分曲面控制着色器是可选的),那么将也会得到一个GL_INVALID_OPERATION错误。  patch仅仅是传入到OpenGL的一列顶点列表,该列表在处理期间保存它们的次序。当用细分曲面与patch进行渲染时,使用像glDrawArrays()这样的渲染命令,并指定从绑定的顶点缓存对象(VBO)将被读出的顶点的总数,然后为该绘制调用进行处理。当用其它的OpenGL图元进行渲染时,OpenGL基于在绘制调用中所指定的图元类型而隐式地知道要使用多少顶点,比如使用三个顶点来绘制一个三角形。然后,当使用一个patch时,需要告诉OpenGL顶点数组中要使用多少个顶点来组成一个patch,而这可以通过使用glPatchParameteri()进行指定。由同一个绘制调用所处理的patch,它们的尺寸(即每个patch的顶点个数)将是相同的。  void glPatchParameteri(GLenum pname, GLint value);  /**  * 使用value来指定一个patch中的顶点个数。pname必须设置为GL_PATCH_VERTICES。  * 如果value小于零或大于GL_MAX_PATCH_VERTICES,将会产一个GL_INVALID_ENUM的错误。  * 一个patch的默认顶点个数是三。如果一个patch的顶点个数小于参数value值,那么该patch将被忽略,从而不会有几何图形产生。  */  要指定一个patch,使用类型GL_PATCHES输入到任一OpenGL绘制命令。以下代码描述了发射两个patch,每个patch含有四个顶点,然后通过glDrawArrays绘制命令进行渲染。  复制代码  GLfloat vertices[][2] = {  {-0.75f, -0.25f}, {-0.25f, -0.25f}, {-0.25f, 0.25f}, {-0.75f, 0.25f},  {0.25f, -0.25f}, {0.75f, -0.25f}, {0.75f, -0.25f}, {0.75f, 0.25f}, {0.25f, 0.25f}  };  glBindVertexArray(VAO);  glBindBuffer(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);  glVertexAttribPointer(vPos, 2, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0));  glPatchParameteri(GL_PATCH_VERTICES, 4);  glDrawArrays(GL_PATCHES, 0, 8);  每个patch的顶点首先由当前绑定的顶点着色器处理,然后用于初始化数组gl_in,这个变量在细分曲面控制着色器中被隐式地声明。gl_in中的元素个数与由glPatchParameteri()所指定的patch大小相同。在一个细分曲面着色器内部,变量gl_PatchVerticesIn提供了gl_in中的元素个数(就好比使用sizeof(gl_in) / sizeof(gl_in[0])进行查询)。

请问在CANOpen协议中,PDO和SDO分别有怎样的功能?比如附件中的数据字典表格,是使用PDO还是使用SDO

PDO是过程数据的发送,实时,速度快,SDO则是服务数据的发送接收,实时性要求不高,主要用于从站的配置。、通过PDO映射,比如把0x201(Node ID 为 1)映射为发送索引为 0x6040 子索引为0x00 的数据字典对象,则直接把COB_ID 设置为 0x201就可以直接发送数据到Node 1 的0x6040 0x00 对象,而不需要使用SDO发送包括索引和子索引在内的数据。所以说PDO快速,实时。当然使用SDO同样可以发送,但是附加的索引信息占用了总线资源。

canopen SDO 被中止 施耐德M340PLC与第三方伺服通讯

err灯亮就是总线有错误,请检查终止代码。检查SDO指令的参数。检查对象为只读还是只写。核查从站的状态。

求C++中利用opencv计算轮廓图像傅里叶描述子的代码

一、特征点(角点)匹配图像匹配能够应用的场合非常多,如目标跟踪,检测,识别,图像拼接等,而角点匹配最核心的技术就要属角点匹配了,所谓角点匹配是指寻找两幅图像之间的特征像素点的对应关系,从而确定两幅图像的位置关系。角点匹配可以分为以下四个步骤:1、提取检测子:在两张待匹配的图像中寻找那些最容易识别的像素点(角点),比如纹理丰富的物体边缘点等。2、提取描述子:对于检测出的角点,用一些数学上的特征对其进行描述,如梯度直方图,局部随机二值特征等。检测子和描述子的常用提取方法有:sift,harris,surf,fast,agast,brisk,freak,brisk,brief/orb等。3、匹配:通过各个角点的描述子来判断它们在两张图像中的对应关系,常用方法如 flann等。4、消噪:去除错误匹配的外点,保留正确的匹配点。常用方法有KDTREE,BBF,Ransac,GTM等。二、SIFT匹法的提出为了排除因为图像遮挡和背景混乱而产生的无匹配关系的关键点,SIFT的作者Lowe提出了比较最近邻距离与次近邻距离的SIFT匹式:取一幅图像中的一个SIFT关键点,并找出其与另一幅图像中欧式距离最近的前两个关键点,在这两个关键点中,如果最近的距离除以次近的距离得到的比率ratio少于某个阈值T,则接受这一对匹配点。因为对于错误匹配,由于特征空间的高维性,相似的距离可能有大量其他的错误匹配,从而它的ratio值比较高。显然降低这个比例阈值T,SIFT匹配点数目会减少,但更加稳定,反之亦然。Loweratio的阈值为0.8,但作者对大量任意存在尺度、旋转和亮度变化的两幅图片进行匹配,结果表明ratio取值在0. 4~0. 6 之间最佳,小于0. 4的很少有匹配点,大于0. 6的则存在大量错误匹配点,所以建议ratio的取值原则如下:ratio=0. 4:对于准确度要求高的匹配;ratio=0. 6:对于匹配点数目要求比较多的匹配;ratio=0. 5:一般情况下。三、常见的SIFT匹配代码1、vlfeat中sift toolbox中的vl_ubcmatch.c使用的是普通的欧氏距离进行匹配(该SIFT代码贡献自AndreaVedaldi)。2、Lowe的C++代码中使用的是欧氏距离,但是在matlab代码中为了加速计算,使用的是向量夹角来近似欧氏距离:先将128维SIFT特征向量归一化为单位向量(每个数除以平方和的平方根),然后点乘来得到向量夹角的余弦值,最后利用反余弦(acos函数)求取向量夹角。实验证明Lowe的办法正确率和耗时都很不错。同样,也可以采用knnsearch函数求最近点和次近点:knnsearch采用euclidean距离时得到的结果与lowe采用的近似方法结果几乎一致,正好印证了模拟欧氏距离的效果。3、Rob Hess的OpenSIFT采用了KDTREE来对匹配进行优化。4、CSDN大神v_JULY_v实现了KDTREE+BBF对SIFT匹配的优化和消除错误匹配:从K近邻算法、距离度量谈到KD树、SIFT+BBF算法- 结构之法 算法之道 - 博客频道 - CSDN.NET。5、OpenCV中features2d实现的SIFT匹配有多种matcher:VectorDescriptorMatcher,BFMatcher(Brute-force descriptor matcher),FernDescriptorMatcher,OneWayDescriptorMatcher,FlannBasedMatcher 等等。目前只知道采用knnsearch,提供了多种距离度量方式,具体区别不懂。

C++怎么调用openMVG库

OpenMVG (open Multiple View Geometry):开源多视角立体几何库,这是一个cv届处理多视角立体几何的著名开源库,信奉逗简单,可维护地,提供了一套强大的接口,每个模块都被测试过,尽力提供一致可靠的体验。地址:github文档:documentsopenMVG能够:解决多视角立体几何的精准匹配问题;提供一系列SfM需要用到的特征提取和匹配方法;完整的SfM工具链(校正,参估,重建,表面处理等);openMVG尽力提供可读性性强的代码,方便开发者二次开发,核心功能是尽量精简的,所以你可能需要其它库来完善你的系统。openMVG分成了几个大的模块:核心库:各个功能的核心算法实现;样例:教你怎么用;工具链:也就是连起来用咯(乱序图像集的特征匹配,SfM,处理色彩和纹理);#0. 安装(win10+VS2013)第一步当然是从github clone代码,然后按照 BUILD 说明操作,需要注意的是:template <class T> inline T operator|(T x, T y){return static_cast<T>(static_cast<int>(x) | static_cast<int>(y));};建议和opencv一起编译,方法是在CMakeLists.txt文件中修改相应选项为 ON,然后在cmake的GUI中添加一个叫OpenCV_DIR的入口,值就是你已经安装好的opencv的路径。openMVG写的非常不错,对Windows也提供了良好的支持,所以cmake之后用VS打开生成的openMVG.sln解决方案就可以进行编译了,编译的时间稍久。我用的VS2013不支持C++新特性:constexpr,所以建议你使用VS2015或更新版本,如果一定要用VS2013,可以这样做:在src/openMVG/cameras/Camera_Common.hpp文件中将有constexpr的地方直接去掉,或者改成模板函数也是可以的:运行样例,这里遇到一个坑:DenseStoraage.h line 86报错:R6010 Assertion failed,这是一个断言错误,在release模式下不会出现,但在debug模式下几乎是必现。原因嘛,打开Eigen给出的网址可以明确:数据结构未对齐(unaligned arrays)。这个问题对于刚接触openMVG的人来说还是很烦人的,openMVG代码很优雅,很多数据类型都是从模板类或函数延伸,通过虚函数扩展各项具体方法,而且非常强烈的依赖Eigen这个库,所以给定位问题带来了阻碍。经过一天的攻坚,最后大概确认了原因:regions.h这个文件中定义的Regions类包含了fixed-size vectorizable Eigen types的stl容器vector,按照Eigen提供的解决方法,需要做的是://原来typedef std::vector<FeatureT> FeatsT;//改成typedef std::vector<FeatureT, Eigen::aligned_allocator<FeatureT>> FeatsT;//其它类似的地方都要改,包括返回vector的函数,最好也加上 EIGEN_MAKE_ALIGNED_OPERATOR_NEW#1. 核心库#1.1 图像#Image ContaineropenMVG提供一个基本的类用作图像容器:Image<T>,T代表像素类型,这个类可以处理灰度,RGB,RGBA或者自定义类型的图像。用法很简单:// A 8-bit gray image:Image<unsigned char> grayscale_image_8bit;// Multichannel image: (use pre-defined pixel type)// A 8-bit RGB image:Image<RGBColor> rgb_image_8bit;// 8-bit RGBA imageImage<RGBAColor> rgba_image_8bit;Image<Rgba<unsigned char> > rgba_image2_8bit;这里的 RGBColor,RGBAColor等是openMVG基于Eigen定义好的类型,具体是定义在pixel_types.hpp中。#Image I/OopenMVG支持ppm/pgm,jpeg,png,tiff格式的图片文件,例子:Image<RGBColor> rgb_image_gray;bool bRet = ReadImage("Foo.imgExtension", &rgb_image);#Drawing operations用于在图像上画圆,椭圆,直线等。#1.2 数值openMVG重新包装了Eigen的基本类型和算法,以便更简单的调用。比如 Vec2代表一个二维点(char型)。#1.3 特征这个模块主要是提供特征容器的封装,包括特征,特征描述,关键点集等,基本都是模板类,比如顶一个sift特征描述子可以这样做:// SIFT like descriptortypedef Descriptor<float, 128> siftDescriptorData;#1.4 相机此模块提供不同的相机模型的抽象类,包括:#小孔相机模型最简单的相机模型,如图: 相机模型包括内参和外参,关键词也就是大家熟悉的几样:投影矩阵,旋转、平移矩阵,焦距、主点等,具体参见说明。 看一个例子:openMVG提供的PinholeCamera类:/// Pinhole camera P = K[R|t], t = -RCstruct PinholeCamera{//构造函数PinholeCamera(const Mat3 & K = Mat3::Identity(),const Mat3 & R = Mat3::Identity(),const Vec3 & t = Vec3::Zero()): _K(K), _R(R), _t(t){_C = -R.transpose() * t;P_From_KRt(_K, _R, _t, &_P);}PinholeCamera(const Mat34 & P){_P = P;KRt_From_P(_P, &_K, &_R, &_t);_C = -_R.transpose() * _t;}/// Projection matrix P = K[R|t]Mat34 _P;/// Intrinsic parameter (Focal, principal point)Mat3 _K;/// Extrinsic RotationMat3 _R;/// Extrinsic translationVec3 _t;/// Camera centerVec3 _C;};#1.5 多视角几何这部分是比较基础和重要的模块之一,包括了:多视角集几何中n(>=2)视角的求解算法;将这些求解算法综合起来以便进行鲁棒估计的通用框架——Kernel;文档中讲解了单应矩阵,本征矩阵,本质矩阵,位置矩阵等的概念,讲得非常好,建议仔细阅读文档。 简单的解释一下:单应矩阵:描述两个投影平面之间的关系;本征矩阵:同一个场景在两个相机成像下的关系,也就是物体上的点A在两个视角下成像位置的关系;本质矩阵:基于本征矩阵和内参矩阵建立,描述相机和本征矩阵位置之间的相对关系;位置矩阵:估计相机的绝对位置(被转化为一个最小化问题求解);Kernel:一个将求解器、数据、度量方案等结合起来的类,这个类将用于鲁棒的估计以上的参数和矩阵;#1.6 线性规划一个用于求解多视角几何中线性优化(参数估计)的工具集,文档。#1.7 鲁棒估计提供一些列鲁棒估计方法,比如:Max-Consensus,Max-Consensus,AC-Ransac A Contrario Ransac等。#1.7 匹配提供的接口包括:NNS,K-NN,FLANN,KVLD,Cascade hashing Nearest Neighbor等。这些接口可用于在二维或三维点集,以及更高维的特征描述集中。#1.8 追踪多视几何里的追踪是指在一系列的图片中找到对应的特征点(同一点在不同视角下的位置)。#1.9 sfmopenMVG提供的sfm模块包含了处理SfM问题的一系列方法个数据存储接口,例如相机位置估计,结构测量,BA等。 SfM_Data类包含了SfM所有的输入:struct SfM_Data{/// Considered viewsViews views; // 包含图像文件名,id_view,id_pose,id_intrinsic,image size。/// Considered poses (indexed by view.id_pose)Poses poses; // 相机的三维位置/// Considered camera intrinsics (indexed by view.id_cam)Intrinsics intrinsics; // 相机内参/// Structure (3D points with their 2D observations)Landmarks structure; // 二维视图特征关联的3D点}下面是例子:#1. features_siftPutativeMatches这个样例做了这么几件事(直接翻译官方):分别提取两张图像的SIFT特征(使用非免费的vlsift)并形成特征描述;根据特征描述子匹配两张图像上的特征点(BRUTE_FORCE_L2方法);展示匹配结果;刚开始的时候会遇到Assertion failed断言错误,处理办法见上一篇文章。运行成功项目目录下会生成三个文件:00_images.jpg,01_features.jpg,02_siftMatches.svg。#2. features_affine_demo这个例子是图像MSER(参考)和TBMR特征提取的样例,MSER(Maximally Stable Extremal Regions)最大极值稳定区域是一种对图像灰度具有仿射变换不变性,也许也是这个样例起名的原因。TBMR(tree-based Morse regions)这个算法不是特别了解,具体可以在google学术中搜索。#3. features_image_matching这个样例给出了利用Image_describer接口提取特征描述子,并匹配和显示结果的样例。示例中可以选择SIFT,AKAZE_MLDB或者AKAZE算法,AKAZE介绍可看这里,是一种比SIFT更稳定的特征检测算法。程序中关于解析输入参数的部分可以注释掉(如果你是用过VS2013 debug),直接修改sImage_describer_type这个值以测试。#4. features_kvld_filter 和 features_repeatability这两个也是关于特征提取和匹配的,kvld这个例子中由于之前更改了regions.h中的内容,所以有些函数接口也要做相应改变,具体也是在vector中增加对齐函数选项。#5. multiview_robust_homography_guided 和 multiview_robust_fundamental_guided这两个样例是估计单应矩阵和本征矩阵的,并且能够根据这些信息反过来确定匹配点。两个样例运行时间都很长(分辨率教大时),第一个在用另外的照片时还遇到报错,大概是在DoG时出错,具体也没有细究了·····#6. exif_Parsing提取EXIF信息,编译后通过命令行执行,给出的参数格式:--imafile 你的照片路径,路径中使用/斜杠。另一篇:learn openMVG-安装和简介#7. multiview_robust_essential估计本质矩阵并计算3D结构。这个例子可以直接运行,生成的点云十分稀疏且不带颜色信息。

opencv3.0没有SIFT嘛,我想用怎么办。。。新手,渣,求指教

我用的是4.0的版本的,我用的时候在头文件加了#include<opencv2/xfeatures2d.hpp>using namespace cv::xfeatures2d;

求opencv实现sift算法的程序

到底是使用还是实现,实现的话直接看opencv的源码就好了。使用的话方法不一,传送门:http://www.cnblogs.com/tornadomeet/archive/2012/03/08/2384843.html

java opencv 怎样确定sift 匹配结果

这几天继续在看Lowe大神的SIFT神作,看的眼花手脚抽筋。也是醉了!!!!实在看不下去,来点干货。我们知道opencv下自带SIFT特征检测以及MATCH匹配的库,这些库完全可以让我们进行傻瓜似的操作。但实际用起来的时候还不是那么简单。下文将对一个典型的基于OPENCV的SIFT特征点提取以及匹配的例程进行分析,并由此分析详细的对OPENCV中SIFT算法的使用进行一个介绍。OPENCV下SIFT特征点提取与匹配的大致流程如下:读取图片-》特征点检测(位置,角度,层)-》特征点描述的提取(16*8维的特征向量)-》匹配-》显示其中,特征点提取主要有两个步骤,见上行黄子部分。下面做具体分析。1、使用opencv内置的库读取两幅图片2、生成一个SiftFeatureDetector的对象,这个对象顾名思义就是SIFT特征的探测器,用它来探测衣服图片中SIFT点的特征,存到一个KeyPoint类型的vector中。这里有必要说keypoint的数据结构,涉及内容较多,具体分析查看opencv中keypoint数据结构分析,里面讲的自认为讲的还算详细(表打我……)。简而言之最重要的一点在于:keypoint只是保存了opencv的sift库检测到的特征点的一些基本信息,但sift所提取出来的特征向量其实不是在这个里面,特征向量通过SiftDescriptorExtractor 提取,结果放在一个Mat的数据结构中。这个数据结构才真正保存了该特征点所对应的特征向量。具体见后文对SiftDescriptorExtractor 所生成的对象的详解。就因为这点没有理解明白耽误了一上午的时间。哭死!3、对图像所有KEYPOINT提取其特征向量:得到keypoint只是达到了关键点的位置,方向等信息,并无该特征点的特征向量,要想提取得到特征向量就还要进行SiftDescriptorExtractor 的工作,建立了SiftDescriptorExtractor 对象后,通过该对象,对之前SIFT产生的特征点进行遍历,找到该特征点所对应的128维特征向量。具体方法参见opencv中SiftDescriptorExtractor所做的SIFT特征向量提取工作简单分析。通过这一步后,所有keypoint关键点的特征向量被保存到了一个MAT的数据结构中,作为特征。4、对两幅图的特征向量进行匹配,得到匹配值。两幅图片的特征向量被提取出来后,我们就可以使用BruteForceMatcher对象对两幅图片的descriptor进行匹配,得到匹配的结果到matches中,这其中具体的匹配方法暂没细看,过段时间补上。至此,SIFT从特征点的探测到最后的匹配都已经完成,虽然匹配部分不甚了解,只扫对于如何使用OPENCV进行sift特征的提取有了一定的理解。接下来可以开始进行下一步的工作了。附:使用OPENCV下SIFT库做图像匹配的例程123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778// opencv_empty_proj.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include opencv.hpp>#include features2d/features2d.hpp>#includenonfree/nonfree.hpp>#includelegacy/legacy.hpp>#includeusing namespace std;using namespace cv;int _tmain(int argc, _TCHAR* argv[]){const char* imagename = "img.jpg";//从文件中读入图像Mat img = imread(imagename);Mat img2=imread("img2.jpg");//如果读入图像失败if(img.empty()){fprintf(stderr, "Can not load image %s ", imagename);return -1;}if(img2.empty()){fprintf(stderr, "Can not load image %s ", imagename);return -1;}//显示图像imshow("image before", img);imshow("image2 before",img2);//sift特征检测SiftFeatureDetector siftdtc;vectorkp1,kp2;siftdtc.detect(img,kp1);Mat outimg1;drawKeypoints(img,kp1,outimg1);imshow("image1 keypoints",outimg1);KeyPoint kp;vector::iterator itvc;for(itvc=kp1.begin();itvc!=kp1.end();itvc++){cout<<"angle:"<angle<<" "<class_id<<" "<octave<<" "<pt<<" "<response<<endl;}siftdtc.detect(img2,kp2);Mat outimg2;drawKeypoints(img2,kp2,outimg2);imshow("image2 keypoints",outimg2);SiftDescriptorExtractor extractor;Mat descriptor1,descriptor2;BruteForceMatcher<L2> matcher;vector matches;Mat img_matches;extractor.compute(img,kp1,descriptor1);extractor.compute(img2,kp2,descriptor2);imshow("desc",descriptor1);cout<<endl<<descriptor1<<endl;matcher.match(descriptor1,descriptor2,matches);drawMatches(img,kp1,img2,kp2,matches,img_matches);imshow("matches",img_matches);//此函数等待按键,按键盘任意键就返回waitKey();return 0;}

opencv sift 怎么提高匹配正确率

解决思路如下:sift匹配分为两部分,第一部分,sift特征点检测; 第二部分,sift对特征点进行描述。 我建议你用harris或者其他的特征点提取方法做第一部分,这样检测的特征点可能会多些。希望能够帮到你~

openCV的SIFT()不能用

openCV的SIFT()不能用,版权问题,只需回退opencv的版本即可。 pip uninstall opencv-python pip uninstall opencv-contrib-python pip install opencv_python==3.4.2.16 pip install opencv-contrib-python==3.4.2.16 然后再打开一次python环境即可运行sift = cv2.SIFT()

Android中调用OpenCV库来提取图片的SIFT特征,这个功能你咋实现的?

你可以去 OpenCV论坛上看看。希望能帮到你!

OpenCV+Python特征提取算法与图像描述符之SIFT / SURF / ORB

算法效果比较博文 用于表示和量化图像的数字列表,简单理解成将图片转化为一个数字列表表示。特征向量中用来描述图片的各种属性的向量称为特征矢量。 参考 是一种算法和方法,输入1个图像,返回多个特征向量(主要用来处理图像的局部,往往会把多个特征向量组成一个一维的向量)。主要用于图像匹配(视觉检测),匹配图像中的物品。 SIFT论文 原理 opencv官网解释 实质是在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。SIFT所查找到的关键点是一些十分突出,不会因光照,仿射变换和噪音等因素而变化的点,如角点、边缘点、暗区的亮点及亮区的暗点等。 尺度不变特征转换(Scale-invariant feature transform或SIFT)是一种电脑视觉的算法用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量。 其应用范围包含物体辨识、机器人地图感知与导航、影像缝合、3D模型建立、手势辨识、影像追踪和动作比对。 对现实中物体的描述一定要在一个十分重要的前提下进行,这个前提就是对自然界建模时的尺度。当用一个机器视觉系统分析未知场景时,计算机没有办法预先知道图像中物体的尺度,因此我们需要同时考虑图像在多尺度下的描述,获知感兴趣物体的最佳尺度。图像的尺度空间表达指的是图像的所有尺度下的描述。 KeyPoint数据结构解析 SURF论文 原理 opencv官网解释 SURF是SIFT的加速版,它善于处理具有模糊和旋转的图像,但是不善于处理视角变化和光照变化。在SIFT中使用DoG对LoG进行近似,而在SURF中使用盒子滤波器对LoG进行近似,这样就可以使用积分图像了(计算图像中某个窗口内所有像素和时,计算量的大小与窗口大小无关)。总之,SURF最大的特点在于采用了Haar特征以及积分图像的概念,大大加快了程序的运行效率。 因为专利原因,OpenCV3.3开始不再免费开放SIFTSURF,需要免费的请使用ORB算法 ORB算法综合了FAST角点检测算法和BRIEFF描述符。 算法原理 opencv官方文档 FAST只是一种特征点检测算法,并不涉及特征点的特征描述。 论文 opencv官方文档 中文版 Brief是Binary Robust Independent Elementary Features的缩写。这个特征描述子是由EPFL的Calonder在ECCV2010上提出的。主要思路就是在特征点附近随机选取若干点对,将这些点对的灰度值的大小,组合成一个二进制串,并将这个二进制串作为该特征点的特征描述子。文章同样提到,在此之前,需要选取合适的gaussian kernel对图像做平滑处理。 1:不具备旋转不变性。 2:对噪声敏感 3:不具备尺度不变性。 ORB论文 OpenCV官方文档 ORB采用了FAST作为特征点检测算子,特征点的主方向是通过矩(moment)计算而来解决了BRIEF不具备旋转不变性的问题。 ORB还做了这样的改进,不再使用pixel-pair,而是使用9×9的patch-pair,也就是说,对比patch的像素值之和,解决了BRIEF对噪声敏感的问题。 关于计算速度: ORB是sift的100倍,是surf的10倍。 对图片数据、特征分布的一种统计 对数据空间(bin)进行量化 Kmeans 边缘:尺度问题->不同的标准差 捕捉到不同尺度的边缘 斑点 Blob:二阶高斯导数滤波LoG关键点(keypoint):不同视角图片之间的映射,图片配准、拼接、运动跟踪、物体识别、机器人导航、3D重建 SIFTSURF

求在autojs中使用opencv的SIFT特征匹配例子

// 导入OpenCV模块var cv = require("opencv");// 读取图像var img1 = cv.imread("/sdcard/img1.jpg");var img2 = cv.imread("/sdcard/img2.jpg");// 创建SIFT检测器对象var sift = new cv.FeatureDetector("SIFT");// 检测图像中的关键点和描述符var keypoints1 = sift.detect(img1);var keypoints2 = sift.detect(img2);var descriptors1 = sift.compute(img1, keypoints1);var descriptors2 = sift.compute(img2, keypoints2);// 创建FLANN匹配器对象var matcher = new cv.Matcher("FlannBased");// 对两幅图像中的关键点进行匹配var matches = matcher.match(descriptors1, descriptors2);// 筛选出最优的匹配结果var bestMatches = matcher.filterMatches(matches, 0.75);// 在两幅图像中绘制匹配结果var output = new cv.Mat();cv.drawMatches(img1, keypoints1, img2, keypoints2, bestMatches, output);// 保存匹配结果图像cv.imwrite("/sdcard/matches.jpg", output);以上代码中,我们使用了AutoJS的require()函数导入OpenCV模块,并使用cv.imread()函数读取了两幅图像。然后,我们创建了一个SIFT检测器对象,并使用它检测了两幅图像中的关键点和描述符。接着,我们创建了一个FLANN匹配器对象,并使用它对两幅图像中的关键点进行了匹配。最后,我们筛选出了最优的匹配结果,并使用cv.drawMatches()函数在两幅图像中绘制了匹配结果,并将结果保存到了本地。

opencv surf检测怎么控制关键点个数

解决思路如下:sift匹配分为两部分,第一部分,sift特征点检测; 第二部分,sift对特征点进行描述。 我建议你用harris或者其他的特征点提取方法做第一部分,这样检测的特征点可能会多些。希望能够帮到你~

OpenCV-Python之——图像SIFT特征提取

在一定的范围内,无论物体是大还是小,人眼都可以分辨出来。然而计算机要有相同的能力却不是那么的容易,在未知的场景中,计算机视觉并不能提供物体的尺度大小,其中的一种方法是把物体不同尺度下的图像都提供给机器,让机器能够对物体在不同的尺度下有一个统一的认知。在建立统一认知的过程中,要考虑的就是在图像在不同的尺度下都存在的特征点。 在早期图像的多尺度通常使用图像金字塔表示形式。图像金字塔是同一图像在不同的分辨率下得到的一组结果其生成过程一般包括两个步骤: 多分辨率的图像金字塔虽然生成简单,但其本质是降采样,图像的局部特征则难以保持,也就是无法保持特征的尺度不变性。 我们还可以通过图像的模糊程度来模拟人在距离物体由远到近时物体在视网膜上成像过程,距离物体越近其尺寸越大图像也越模糊,这就是高斯尺度空间,使用不同的参数模糊图像(分辨率不变),是尺度空间的另一种表现形式。 构建尺度空间的目的是为了检测出在不同的尺度下都存在的特征点,而检测特征点较好的算子是Δ^2G(高斯拉普拉斯,LoG) 使用LoG虽然能较好的检测到图像中的特征点,但是其运算量过大,通常可使用DoG(差分高斯,Difference of Gaussina)来近似计算LoG。 从上式可以知道,将相邻的两个高斯空间的图像相减就得到了DoG的响应图像。为了得到DoG图像,先要构建高斯尺度空间,而高斯的尺度空间可以在图像金字塔降采样的基础上加上高斯滤波得到,也就是对图像金字塔的每层图像使用不同的参数σ进行高斯模糊,使每层金字塔有多张高斯模糊过的图像。 如下图,octave间是降采样关系,且octave(i+1)的第一张(从下往上数)图像是由octave(i)中德倒数第三张图像降采样得到。octave内的图像大小一样,只是高斯模糊使用的尺度参数不同。 对于一幅图像,建立其在不同尺度scale下的图像,也称为octave,这是为了scale-invariant,也就是在任何尺度都能有对应的特征点。下图中右侧的DoG就是我们构建的尺度空间。 为了寻找尺度空间的极值点,每一个采样点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。如图所示,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。 一个点如果在DOG尺度空间本层以及上下两层的26个领域中是最大或最小值时,就认为该点是图像在该尺度下的一个特征点。下图中将叉号点要比较的26个点都标为了绿色。 找到所有特征点后, 要去除低对比度和不稳定的边缘效应的点 ,留下具有代表性的关键点(比如,正方形旋转后变为菱形,如果用边缘做识别,4条边就完全不一样,就会错误;如果用角点识别,则稳定一些)。去除这些点的好处是增强匹配的抗噪能力和稳定性。最后,对离散的点做曲线拟合,得到精确的关键点的位置和尺度信息。 近来不断有人改进,其中最著名的有 SURF(计算量小,运算速度快,提取的特征点几乎与SIFT相同)和 CSIFT(彩色尺度特征不变变换,顾名思义,可以解决基于彩色图像的SIFT问题)。 其中sift.detectAndCompute()函数返回kp,des。 上图dog的shape为(481, 500, 3),提取的特征向量des的shape为(501, 128),501个128维的特征点。 该方法可以在特征点处绘制一个小圆圈。 https://blog.csdn.net/happyer88/article/details/45817305 https://www.jianshu.com/p/d94e558ebe26 https://www.cnblogs.com/wangguchangqing/p/4853263.html

opencv sift 怎么用

OPENCV下SIFT特征点提取与匹配的大致流程如下:读取图片-》特征点检测(位置,角度,层)-》特征点描述的提取(16*8维的特征向量)-》匹配-》显示其中,特征点提取主要有两个步骤,见上行黄子部分。下面做具体分析。1、使用opencv内置的库读取两幅图片2、生成一个SiftFeatureDetector的对象,这个对象顾名思义就是SIFT特征的探测器,用它来探测衣服图片中SIFT点的特征,存到一个KeyPoint类型的vector中。这里有必要说keypoint的数据结构,涉及内容较多,具体分析查看opencv中keypoint数据结构分析,里面讲的自认为讲的还算详细(表打我……)。简而言之最重要的一点在于:keypoint只是保存了opencv的sift库检测到的特征点的一些基本信息,但sift所提取出来的特征向量其实不是在这个里面,特征向量通过SiftDescriptorExtractor 提取,结果放在一个Mat的数据结构中。这个数据结构才真正保存了该特征点所对应的特征向量。具体见后文对SiftDescriptorExtractor 所生成的对象的详解。就因为这点没有理解明白耽误了一上午的时间。哭死!3、对图像所有KEYPOINT提取其特征向量:得到keypoint只是达到了关键点的位置,方向等信息,并无该特征点的特征向量,要想提取得到特征向量就还要进行SiftDescriptorExtractor 的工作,建立了SiftDescriptorExtractor 对象后,通过该对象,对之前SIFT产生的特征点进行遍历,找到该特征点所对应的128维特征向量。具体方法参见opencv中SiftDescriptorExtractor所做的SIFT特征向量提取工作简单分析。通过这一步后,所有keypoint关键点的特征向量被保存到了一个MAT的数据结构中,作为特征。4、对两幅图的特征向量进行匹配,得到匹配值。两幅图片的特征向量被提取出来后,我们就可以使用BruteForceMatcher对象对两幅图片的descriptor进行匹配,得到匹配的结果到matches中。至此,SIFT从特征点的探测到最后的匹配都已经完成,虽然匹配部分不甚了解,只扫对于如何使用OPENCV进行sift特征的提取有了一定的理解。接下来可以开始进行下一步的工作了。附:使用OPENCV下SIFT库做图像匹配的例程// opencv_empty_proj.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <opencv2/opencv.hpp>#include <opencv2/features2d/features2d.hpp>#include<opencv2/nonfree/nonfree.hpp>#include<opencv2/legacy/legacy.hpp>#include<vector>using namespace std;using namespace cv;int _tmain(int argc, _TCHAR* argv[]){const char* imagename = "img.jpg";//从文件中读入图像Mat img = imread(imagename);Mat img2=imread("img2.jpg");//如果读入图像失败if(img.empty()){fprintf(stderr, "Can not load image %s ", imagename);return -1;}if(img2.empty()){fprintf(stderr, "Can not load image %s ", imagename);return -1;}//显示图像imshow("image before", img);imshow("image2 before",img2);//sift特征检测SiftFeatureDetector siftdtc;vector<KeyPoint>kp1,kp2;siftdtc.detect(img,kp1);Mat outimg1;drawKeypoints(img,kp1,outimg1);imshow("image1 keypoints",outimg1);KeyPoint kp;vector<KeyPoint>::iterator itvc;for(itvc=kp1.begin();itvc!=kp1.end();itvc++){cout<<"angle:"<<itvc->angle<<" "<<itvc->class_id<<" "<<itvc->octave<<" "<<itvc->pt<<" "<<itvc->response<<endl;}siftdtc.detect(img2,kp2);Mat outimg2;drawKeypoints(img2,kp2,outimg2);imshow("image2 keypoints",outimg2);SiftDescriptorExtractor extractor;Mat descriptor1,descriptor2;BruteForceMatcher<L2<float>> matcher;vector<DMatch> matches;Mat img_matches;extractor.compute(img,kp1,descriptor1);extractor.compute(img2,kp2,descriptor2);imshow("desc",descriptor1);cout<<endl<<descriptor1<<endl;matcher.match(descriptor1,descriptor2,matches);drawMatches(img,kp1,img2,kp2,matches,img_matches);imshow("matches",img_matches);//此函数等待按键,按键盘任意键就返回waitKey();return 0;}

Open Rails不能运行是怎么回事

偶尔也是正常,重启游戏就可以,要是经常性的,可能就是电脑配置过低

2019虚幻引擎技术开放日Unreal Open Day大会主旨演讲及完整议程曝光

Unreal Open Day 是由 Epic Games 中国一年一度倾力打造的面向虚幻引擎开发者的技术分享活动,是引擎行业规格最高、规模最大、阵容最强的年度盛会之一。自从2015年第一届UOD在上海拉开序幕,已成功举办四届开放日活动,且规模也逐年扩大;2019年5月8 - 9日,第五届UOD即将在沪举办。在科技领域的道路上,虚幻引擎全力发展技术革命,截至今年GDC,虚幻引擎用户数已经突破了750万人,其中来自大中华区的用户数量占比相较往年又有了显著增加。 今年Epic Games创始人兼CEO Tim Sweeny先生将以State of Unreal作为第一个主旨演讲,为本届的虚幻引擎开放日Unreal Open Day的精彩议程拉开序幕,同时也会带领众多的虚幻开发者回顾过去一年的成果与进步。 其他精彩演讲主题 (会议议程与内容可能有调整) Keynote: 携手Unreal,为全球玩家打造AAA级手游 祖龙娱乐 / 创始人、董事长兼CEO 李青 李青,祖龙娱乐创始人、董事长兼CEO,是中国最早的游戏制作人之一。在他的率领下,祖龙娱乐成长为中国前三的游戏开发公司,并研制出《 万王之王3D 》、《六龙争霸 3D 》、《梦幻诛仙手游》、《九州天空城3D》等众多远销全球各个国家和地区的精品游戏。2019年,祖龙娱乐使用虚幻引擎4开发的手游大作《龙族幻想》广受瞩目,并有望成为MMO手游领域变革的新开端。 李青将展示祖龙娱乐在虚幻引擎上应用的效果,带开发者了解为达到这样的效果、背后所做的工作,以及给虚幻引擎开发者的经验分享。 Keynote: 本土开发者在游戏全球化趋势中的机遇 心动网络 / 首席执行官 黄一孟 黄一孟,心动网络创始人及CEO,TapTap联合创始人,负责制定集团整体战略及目标。 黄一孟有着多年积累下来的互联网基因,对游戏行业的理解更为深刻。2003年,还在学校中的他创办了VeryCD网站,将电驴软件带入中国;2009年,他再度创业进军游戏行业,并推出心动网络品牌,致力于打造优质游戏产品;2016年,他作为联合创始人创办TapTap,让玩家发现更多好游戏。 黄一孟对专业人才高度重视,通过营造良好的企业文化,保障公司的稳定快速发展。 Keynote: 携手前行 PlayStation上的UE4国产游戏近况分享 索尼互动娱乐(上海) / 总裁 添田武人 毕业于北大的添田武人先生在美进修经济学期间加入索尼,在1992年至2004年的十几年中,他一直从事索尼市场相关方面的工作。经过3年的学习,2006年添田武人拿到了MBA学位。在2013年重返索尼之前,添田武人先后在国际知名公司工作,主要负责市场开拓、营销策略和国际业务拓展等方面的工作。2013年底,添田武人重回索尼集团,加入索尼互动娱乐公司(原索尼电脑娱乐),负责中国市场。现任索尼互动娱乐(上海)有限公司总裁。 由索尼互动娱乐(上海)总裁添田武人带来的,PlayStation平台上国人UE4作品的近况分享和对未来的展望。 会议具体议程 (会议议程与内容可能有调整) 更多精彩分享尽在2019虚幻引擎技术开放日-5月8日及5月9日上海宝华万豪大酒店。 在这里,你不但能听到全球最知名虚幻引擎专家的精彩分析,还能与众多虚幻引擎的开发者进行深入的探讨与交流,共同分享对技术新动向的深入理解。除此之外,你还有机会了解虚幻引擎在更多行业领域的全新应用。可以说Unreal Open Day不但是一场交流学习的盛宴,更是众多虚幻高端人才思维火花碰撞的殿堂。更多的精彩话题,更深入的案例分享,更精彩的思维碰撞与交流,都值得你的期待!

begin,start,open的区别

start作"开始"之意解时,可用作及物和不及物动词,大多数情况可以和begin通用(口语中start较常用)。start和begin后可接不定式,也可接动名词,差别不大。如: When did you start / begin learning (或to learn) English? 你什么时候开始学英语的? If Mary doesn"t come soon, let"s start / begin without her. 要是玛丽一会儿不来,咱们就开始,不等她了。 His illness started / began with a slight cough. 他的病是从轻微的咳嗽开始的。 但下列情况时,只接不定式,不接动名词。 ① start和begin本身用于进行时态时。如: He is just starting / beginning to write the letter. 他刚刚开始写那封信。 ② 当物作主语时。如: The leaves start/ begin to come out when spring comes. 春天到来时,树叶开始长了出来。 ③ start和begin后跟understand, realize, know等与想法、感情有关的静态动词时。如: I slowly started / began to understand how she felt. 我慢慢地开始明白她有什么感觉。 He started / began to realize that how important it was to learn English well. 他开始意识到学好英语有多重要。 在下面几种情况下用start,而不用begin。 1) start=set up, build or found, 可用来表示企业、机构、设施的"创建、创办、开办"。如: The company was started by the two brothers. 这家公司由兄弟俩创办的。 These doctors are going to start a private hospital. 这些医生打算开办一所私立医院。 We"re considering starting a club for the old. 我们正在考虑创办一家老年人俱乐部。 start作"创办、开办"解时,有时可与open互换,只是start着重"创建",而open着重"开始运转"。如: The hospital was started / opened in 2002 by a rich man. 那家医院是一个有钱人于2002 年开办的。 The musician started / opened a special school for the distabled children. 那音乐家为残疾儿童建了一所特殊学校。 另外,open还可用于"道路、港口、(银行的)户头"等的"开放、开通"。如: The workers opened a new road through a forest. 这些工人在森林里开辟了一条新道。 The port will soon be opened to foreign ships. 这港口很快向国外船只开放。 The boy is too young to open an account in the bank. 那男孩太小不能在银行开户头。 2) start=set out or begin a journey, 表示"启程"、"动身"。如: The Smiths started for(=left for) England last Sunday. 史密斯一家是上星期天离开这儿去英格兰的。 At last the train started. 火车终于启动了。 I think we"d better start (out/ off ) at six while the roads are still clear. 我觉得我们最好六点动身,那时路上车辆还少。 3) start=set going, 表示"使……动起来(或运转起来)",后常接-ing形式(不能是不定式)作宾语补足语。如: The smoke started her coughing. 这烟使她咳嗽起来。 My watch has stopped. I must start it going again. 我的表停了, 我得使它再走起来。 4) start还可意为"发动(战争,运动)"、"引起(火灾)、" "开启、启动(机器、车辆)"等。如: How did you start the washing machine? 你是如何开动这台洗衣机的? The movement of women"s liberation was first started in America. 妇女解放运动首先在美国发起。 Don"t throw a lighted cigarette end or it will start a fire. 不要乱扔点燃的烟头,否则会引起火灾。 open 是很实在的打开,与close相对

用OpenGL建立三维坐标系

使用OpenGL实现三维坐标的鼠标拣选Implementation of RIP(Ray-Intersection-Penetration)3D Coordinates Mouse Selection Using OpenGL 顾 露 (武汉理工大学 计算机系 中科院智能设计与智能制造研究所 湖北武汉 430070) 摘要(Abstract): 本文提出并实现一种用于三维坐标拣选的RIP(Ray-Intersection-Penetration)方法。介绍了如何在已经渲染至窗口的三维场景中,使用鼠标或者相关设备拣选特定三维对象的方法。此方法对于正交投影或透视投影均有效,相对于OpenGL自带的选择与反馈机制,本方法无论是拣选精度还是算法实现效率均高出许多,是一种比较通用的解决方案。 关键词(Keywords) 正交投影(Ortho-Projection)、透视投影(Perspective-Projection)世界坐标系、屏幕坐标系、三维拣选、OpenGL 一、简介(Introduction) OpenGL是一种比较“纯粹”的3D图形API,一般仅用于三维图形的渲染,对于特定领域的开发者(如游戏开发者)而言,如果选择使用 OpenGL进行开发,类似碰撞检测的机制就都需要自行编写了。但是由于鼠标在图形程序中的应用非常非常之广泛(例如现在已经很少有PC游戏能完全地脱离鼠标),OpenGL在图形库的基础上添加了选择与反馈机制(Select & Feedback)来满足用户使用鼠标实时操作三维图形的需要。但由于种种原因,我们需要更为特殊的选择机制以满足特定需求,在这里我们提出了一种简单迅速的RIP(Ray-Intersection-Penetration)方法,可以满足绝大多数典型应用的需要。 二、相关研究(Related Work) 用过OpenGL选择与反馈机制的开发者,或多或少可能都会觉得它难以令人满意。大致表现在下面几个方面:一、编写程序比较繁琐。想要使用选择反馈机制就需要切换渲染模式,操作命名堆栈,计算拣选矩阵,检查选中记录,这些繁琐的步骤很容易出错,而且非常不便于调试,只会降低工作效率和热情。 二、只能做基于图元的选定。如下图(1 - a),使用GL_TRIANGLES绘制了一个三角形,三个顶点分别为 P1、P2和P3。若使用该机制,你将只能判断是否在三维场景中选中了这个三角形(用户点击处是否在P1、P2和P3的范围内),而无法判断用户是点击了这个三角形哪一部分(是左边的m区域内还是右边的n区域内),因为所绘制的P1、P2和P3本身构成的三角形就是一个基本图元,对于拣选机制而言是不可分的。当然,把这个三角形拆成两个三角形再分别进行测试也是一个可行的方案,可是看看图(1 - b),这可怎么拆呢?还有图(1 – c)呢?另外,如果n和m两个平面不共面呢?对于使用者而言,OpenGL提供的拣选机制功能的确有限。 三、降低了渲染效率。OpenGL中的选择和反馈是与普通渲染方式不同的一种特殊的渲染方式。我们使用时一般是先在帧缓存中渲染普通场景,然后进入选择模式重绘场景,此时帧缓存的内容并无变化。也就是说,为了选择某些物体,我们需要在一帧中使用不同的渲染方式将其渲染两遍。我们知道对对象进行渲染是比较耗时的操作,当场景中需要选择的对象多而杂的时候,采用这个机制是非常影响速度的。 另外在OpenGL红宝书中介绍了一种简便易行的办法:在后缓冲中使用不同的颜色重绘所有对象,每个对象用一个单色来标示其颜色,这样画好之后我们读取鼠标所在点的颜色,就能够确定我们拣选了哪个物体。这种方法有一个缺陷,当场景中需要选择的对象的数目超出一定限度时,可能会出现标识数的溢出。对于这个问题,红宝书给出的解决办法就是多次扫描。实践证明这种方法的确简便易行,但仍有不少局限性,而且做起来并不比第一种机制方便多少。限于篇幅,不再赘述。 三、具体描述(Related Work) 看过了上面两种方法,我们会发现这两种方法都不是十分的方便,而且使用者不能对其进行完全的控制,不能精确地判定鼠标定位与实际的世界空间中三维坐标的关系。那么有什么更好的办法能够更简单更精确地对其加以控制呢? 实际上此处给出的解决方案十分简单,就是一个很普通也很有用的 GLU 函数 gluUnProject()。此函数的具体用途是将一个OpenGL视区内的二维点转换为与其对应的场景中的三维坐标。转换过程如下图所示(由点P在窗口中的XY坐标得到其在三维空间中的世界坐标): 这个函数在glu.h中的原型定义如下: int APIENTRY gluUnProject ( GLdouble winx, GLdouble winy, GLdouble winz, const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4], GLdouble *objx, GLdouble *objy, GLdouble *objz); 其中前三个值表示窗口坐标,中间三个分别为模型视图矩阵(Model/View Matrix),投影矩阵(Projection Matrix)和视区(ViewPort),最后三个为输出的世界坐标值。可能你会问:窗口坐标不是只有X轴和Y轴两个值么,怎么这里还有Z值?这就要从二维空间与三维空间的关系说起了。众所周知,我们通过一个放置在三维世界中的摄像机,来观察当前场景中的对象。通过使用诸如gluPerspective() 这样的OpenGL函数,我们可以设置这个摄像机所能看到的视野的大小范围。这个视野的边界所围成的几何体是一个标准的平截头体(Frustum),可以看做是金字塔状的几何体削去金字塔的上半部分后形成的一个台状物,如果还原成金字塔状,就得到了通常我们所说的视锥(View Frustum)这个视锥的锥顶就是视点(View Point)也就是摄像机所在的位置。平截头体,视锥以及视点之间的关系,如下图所示: 在上面的图中,远裁剪面ABCD和近裁剪面A"B"C"D"构成了平截头体,加上虚线部分就是视锥,顶点O就是摄像机所在的视点。我们在窗口中所能看到的东东,全部都在此平截头体内。这跟前面的窗口坐标Z值有什么关系呢?看下图: 如此图所示,点P和点P"分别在远裁剪面ABCD和近裁剪面A"B"C"D"上。我们点击屏幕上的点P,反映到视锥中,就是选中了所有的从点P到点P"的点。举个形象的例子,这就像是我们挽弓放箭,如果射出去的箭近乎笔直地飞出(假设力量非常之大近乎无穷),从挽弓的地点直至击中目标,在这条直线的轨迹上任何物体都将被一穿而过。对应这里的情况,用户单击鼠标获得屏幕上的某一点,即是指定了从视点指向屏幕深处的某一方向,也就确定了屏幕上某条从O点出发的射线(在图中即为OP)。在这里,我们称呼其为拣选射线。因此,从窗口的XY坐标,我们仅仅只能获得一条出发自O点的拣选射线,并不能得到用户想要的点在这条射线上的确切位置。这时候窗口坐标的Z值就能派上用场了。我们通过Z值,来指定我们想要的点在射线上的位置。假如用户点击了屏幕上的点(100,100)得到了这条射线OP,那么我们传入值1.0f就表示近裁剪面上的P点,而值0.0f则对应远裁剪面上的P"点。这样,我们通过引入一个窗口坐标的Z值,就能指定视锥内任意点的三维坐标。与此同时,我们还解决了前面红宝书给出的方法中存在的缺陷——同一位置上重叠物体的选择问题。解决办法是:从屏幕坐标得到射线之后,分别让重叠的物体与该射线求交,得到的交点,然后根据这些与视点的远近确定选择的对象。如此我们就不必受“仅仅只能选取屏幕中离观察者最近的物体”的限制了。这样一来,如果需要的话,我们甚至可以用代码来作一定的限定,通过判断交点与视点的距离,使得与该拣选射线相交的物体中,离视点远的对象才能被选取,这样就能够对那些暂时被其他对象遮住的物体进行选取。 至于如何求拣选射线与对象的交点,在各种图形学的书中的数学部分均有讲述,在此不再赘述。 四、例程(Sample Code Fragment) 前面讲述了RIP方法,现在我们来看如何编写代码以实现之,以及一些需要注意的问题。 由于拣选射线以线段形式存储更加便于后面的计算,况且我们可以直接得到纵跨整个平截头体的线段(即前面图中的线段PP"),故我们直接计算出这条连接远近裁剪面的线段。我们将拣选射线的线段形式称之为拣选线段。 在下面的代码前方声明有两个类Point3f和LineSegment这分别表示由三个浮点数构成的三维空间中的点,以及由两个点构成的空间中的一条线段。 应注意代码中用到了类Point3f的一个需要三个浮点参数的构造函数,以及类LineSegment的一个需要两个点参数的构造函数。 获取拣选射线的例程如下所示(使用C++语言编写): class Point3f;class LineSegment;LineSegment GetSelectionRay(int mouse_x, int mouse_y) { // 获取 Model-View、Projection 矩阵 & 获取Viewport视区 GLdouble modelview[16]; GLdouble projection[16]; GLint viewport[4]; glGetDoublev (GL_MODELVIEW_MATRIX, modelview); glGetDoublev (GL_PROJECTION_MATRIX, projection); glGetIntegerv (GL_VIEWPORT, viewport); GLdouble world_x, world_y, world_z; // 获取近裁剪面上的交点 gluUnProject( (GLdouble) mouse_x, (GLdouble) mouse_y, 0.0, modelview, projection, viewport, &world_x, &world_y, &world_z); Point3f near_point(world_x, world_y, world_z); // 获取远裁剪面上的交点 gluUnProject( (GLdouble) mouse_x, (GLdouble) mouse_y, 1.0, modelview, projection, viewport, &world_x, &world_y, &world_z); Point3f far_point(world_x, world_y, world_z); return LineSegment(near_point, far_point);} 如果你是使用Win32平台进行开发,那么应当注意传入正确的参数。因为无论是使用Win32 API 还是DirectInput 来获取鼠标坐标,得到的Y值都应取反后再传入。因为OpenGL默认的原点在视区的左下角,Y轴从左下角指向左上角,而Windows默认的原点在窗口的左上角,而Y轴方向与OpenGL相反,从左上角指向左下角。如下图所示:0XWin32 默认窗口坐标样式OpenGL 默认窗口坐标样式0XYY我们可以看到代码被注释分为了三个部分:获取当前矩阵及视区,获取近裁剪面的交点,获取远裁剪面的交点。我们通过OpenGL提供的查询函数轻松得到当前的ModelView和Projection矩阵,以及当前的Viewport(视区,也就是窗口的客户端区域,如果整个窗口区域用于OpenGL渲染的话)。获得两个裁剪面上的交点的代码基本上是一样的,唯一的不同点是我们前面曾经详细地讨论过的窗口的Z坐标。不错,这个坐标表示的就是“深浅”的概念。它的值从点P"到点P的变化是从0.0f逐渐增至1.0f。此处类似于OpenGL的深度测试机制。在得到两个交点之后,我们使用它们通过返回语句直接构建一条线段。在这里仅仅作为实例代码,故简捷清晰地直接返回线段对象,而没有通过引用参数来提高效率。此时用户可以使用这个函数来判断所选择的对象了。只需在需要的地方判断对象是否与此线段相交即可判断对象是否被选中,还可以通过进一步计算其交点位置来得到详细的交点信息。这些计算均是常见的计算机图形学与三维数学计算,比如线段与三角形求交,线段与面求交,线段与球体求交,线段与柱体或锥体求交,等等。请参考所列出的计算机图形学书籍。 五、结论(Conclusion) 在本文中,我们介绍了一种行之有效的三维坐标拾取方法,主要使用GLU库中的实用工具实现。这种方法速度快,效率高,能在不必重新绘制对象的前提下完成拣选工作。对比OpenGL自带的拣选机制来看,RIP的确在各种方面均有一定的优势。 六、参考文献(Reference) 【1】《OpenGL Programming Guide》OpenGL ARB Mason Woo, Jackie Heider, Tom Davis, Dave Shreiner 【2】《OpenGL Reference Manual》 OpenGL ARB 【3】《Computer Graphics》 Donald Heam, M. Pauline Baker 【4】《Computer Graphics using OpenGL 2nd Edition》 F.S. Hill, JR.

OpenGL之Viewport

1.1 窗口(Screen) 窗口其实就是屏幕,如下图1中红色圈中黑色背景的部分。所有的场景最终都是要被光栅化乘显示器上的图像,屏幕是所有场景(2D、3D等)的最终输出目的地。一个screen可以显示多个视口中的内容; 1.2 视口(Viewport) 视口就是窗口中用来显示图形的一块矩形区域,它可以和窗口等大,也可以比窗口大或者小,如图1中蓝色标示的绿色背景的区域。它具有两个意义:   u2022 定义了视镜体中的景物要被绘制到一张什么尺寸的画布之上;   u2022 定义了画布在屏幕的什么区域; 显然,如果 视景体的投影平面 定义的宽高比和 视口 所定义的宽高比 不相同 的话,那么将视景体中的物体绘制到画布上的时候会进行 拉伸或者压缩 ;而当视景体投影平面的宽高比和视口所定义的宽高比一致的时候,图像将会不进行任何缩放绘制到视口所定义的画布之上。 在实际应用中,一个窗口中会绘制多个3D场景,这个通过定义多个视口,绘制多个图像,然后 贴在 屏幕的不同区域即可。比如图中黄色笔圈中的区域,在画布中定于两个不同的viewport1 (0,0;w/2,y)和 viewport2 (0,w/2;w/2,y); 1.4 视镜体(View Frustum) 视景体(View Volume)定义了我们能够通过虚拟的3D摄像机所能看到的场景。在一个3D场景中站立中,需要摄像机的 摆放位置 和 视野 来定义我们所能够看到的东西,而这个视野就是通过视景体来定义的。在3D中,一般可以通过以下两种方式来定义视景体: 通过前面的介绍,我们大致的了解了这三个不同东西的概念。从中我们可以知道,通过定义投影矩阵,我们实际上是在虚拟的3D空间中,创建了一个视野,也就是视景体。在接着,我们通过定义视口,来描述视景体中的内容如何映射到一个虚拟的画布之上,并且这个画布最终将显示在屏幕上的什么位置。当所有的这些都设置完毕,我们绘制完毕场景之后,就能够通过硬件在我们的显示器屏幕上看到最终的画面。更理论的表述就是,通过定义投影矩阵,将3D场景投影到一个投影平面之上。通过定义视口,我们将投影平面上的内容映射到这个视口中去,并且填满它,同时根据定义视口是给定的屏幕坐标的位置,将这个视口中的图像映射到窗口的指定位置之上,最终我们就看到了图像。 glViewport是OpenGL中的一个函数。计算机图形学中,在屏幕上打开窗口的任务是由窗口系统,而不是OpenGL负责的。glViewport在默认情况下,视口被设置为占据打开窗口的整个像素矩形,如图1,窗口大小和设置视口大小相同,所以为了选择一个更小的绘图区域,就可以用glViewport函数来实现这一变换,在窗口中定义一个像素矩形,最终将图像映射到这个矩形中。例如可以对窗口区域进行划分,在同一个窗口中显示分割屏幕的效果,以显示多个视图。

利用 OpenWrt 共享局域网下的佳能 MG2580s 打印扫描一体机

利用 OpenWrt 在局域网下共享打印机,主要需要以下两个插件 接下来分别介绍两个插件的安装及配置流程 将打印机连接到路由器 USB 接口,输入指令 应该能看到 lp0 设备 找到 服务 - 打印服务器 ,勾选启动。 设备填上刚才看到的 /dev/usb/lp0 ,接口选择 lan 用作局域网共享,端口通常为 9100 。 首先安装打印机对应的驱动程序。在这个案例中我使用的打印机为佳能 MG2580s 。 设置 - 设备 - 打印机和扫描仪 - 添加打印机 - 我需要的打印机不在列表中 选择 使用 TCP/IP 地址或主机名添加打印机 ,点击下一步。 设备类型选择 TCP/IP 设备 ,主机名或 IP 地址填上路由器网关,取消勾选自动查询驱动,点击下一步。 等待自动检测失败,选择 自定义 ,点击设置,检查端口是否与之前设置的 9100 相同,确认后点击下一步。 寻找打印机对应的驱动, Canon - Canon MG2500 series Printer 。 大功告成,enjoy! 注: : 有的时候打印时出现找不到设备的情况,通常是打印机与路由器通讯不畅,进路由器管理找到 p910nd 服务并重启一下就好。 先安装通用插件: 之后还需要安装 sane-backends ,类似于扫描仪驱动接口,如果直接安装这个包过于庞大,我们只需要挑选适合自己打印机型号的驱动包即可。 可以通过 scanimage -L 命令检查是否安装成功,如果打印机正常连接且安装了对应的 backend,应该能看到如下效果: 编辑 /etc/sane.d/saned.conf 检查 /etc/services 是否有 sane-port ,通常安装了 sane-daemon 会自动添加,如果没有,则在文件后手动添加 编辑 /etc/xinetd.d/sane 添加 最后在 LUCI 界面中 系统 - 启动项 ,找到 xinetd 并设置为启用。 windows 下需要用 sanetwain 客户端进行扫描,打开客户端后,把主机名设为路由器网关,端口号 6566 ,即可开始扫描。

jetson设备上如何加速opencv?

CUDA Fast Math (cuBLAS) OpenGL GStreamer 1.0 Video 4 Linux (V4L) Python 2.7 and Python 3.5 support TBB (Threading Build Blocks) 详情可以参考: https://github.com/jetsonhacks/buildOpenCVXavier/blob/master/buildOpenCV.sh OpenCV官方推荐的4Tegra的编译选项: $ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_PNG=OFF -DBUILD_TIFF=OFF -DBUILD_TBB=OFF -DBUILD_JPEG=OFF -DBUILD_JASPER=OFF -DBUILD_ZLIB=OFF -DBUILD_EXAMPLES=ON -DBUILD_opencv_java=OFF -DBUILD_opencv_python2=ON -DBUILD_opencv_python3=OFF -DENABLE_NEON=ON -DWITH_OPENCL=OFF -DWITH_OPENMP=OFF -DWITH_FFMPEG=ON -DWITH_GSTREAMER=OFF -DWITH_GSTREAMER_0_10=OFF -DWITH_CUDA=ON -DWITH_GTK=ON -DWITH_VTK=OFF -DWITH_TBB=ON -DWITH_1394=OFF -DWITH_OPENEXR=OFF -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-8.0 -DCUDA_ARCH_BIN=6.2 -DCUDA_ARCH_PTX="" -DINSTALL_C_EXAMPLES=ON -DINSTALL_TESTS=OFF -DOPENCV_TEST_DATA_PATH=../opencv_extra/testdata ../opencv https://docs.opencv.org/master/d6/d15/tutorial_building_tegra_cuda.html

openwrt挂摄像头后,运行mjpg-streamer软件,数小时后软件自动停止,请问是什么原因?

抱歉,不知道因为什么。估计是程序崩溃,重启程序。

LUGGAGE COMP OPEN是什么意思

LUGGAGE COMP OPEN行李托运开luggage[英][u02c8lu028cgu026adu0292][美][u02c8lu028cɡu026adu0292]n.<英>行李; <美>皮箱; 例句:1.My ipad and light carry-on luggage. 我的ipad和轻便手提行李。

Open Environ$("WinDir") & "system32 askmgr.exe" For Binary As #1

Environ$ 获取Windows环境参数Environ$("WinDir") 获取Windows所在目录,假设是C:WindowsEnviron$("WinDir") & "system32 askmgr.exe" = "C:Windowssystem32 askmgr.exe"Open 文件名 For Binary As #1以二进制方式打开文件,文件号为1

opencv中int step = (int)img.step1()怎么理解?

一行像素的有效宽度规整化的step,值为step / elemSize1。 定义如下:inline size_t Mat::step1(int i) const { return step.p[i]/elemSize1(); }仍以上例代码中定义的img为例,来看下step,step1具体的值: img(3*4)的type是CV_16UC4,step[0]是其一行所占的数据字节数4 *4 * 16 / 8 = 32. step[1] 是一个元素所占的字节数,img的一个元素具有4个通道,故:4 * 16 / 8 = 2 step1 = step / elemSize1,elemSize1是元素的每个通道所占的字节数。

open 和 opened 的具体区别~~

open the door an opened door

open-heart surgery是什么意思

open-heart surgery 英[u02c8u0259u028apu0259nu02c8hɑ:t] 美[u02c8opu0259nu02c8hɑrt] n. 心内直视手术; 全部释义>> [例句]Have you heard about this awake open-heart surgery?你听说这个开心手术了吗?

scrub在openstack中什么意思?

在OpenStack中,Scrub是一个自动化的数据清理工具,用于清除已删除实例的相关数据。当在OpenStack中删除实例时,实例的数据并不会立即被清除,而是被移动到一种称为“scrubbing”的过渡状态。在这个状态下,Scrub工具会自动清理实例的相关数据,包括虚拟硬盘、日志文件和元数据等。这可以帮助释放存储空间并提高系统性能。Scrub工具是OpenStack Compute服务的一部分,通过调用Compute API中的相关功能来执行数据清理操作。它可以自动执行清理操作,也可以手动执行清理操作以及查看清理日志。Scrub工具还支持对多个实例进行并行清理,提高了清理效率和速度。需要注意的是,Scrub工具只能清理已删除的实例的相关数据,对于未删除的实例数据无法进行清理。因此,需要在OpenStack中定期删除不再需要的实例,以便Scrub工具可以及时清理相关数据。

xen、vmware、openVZ都是什么

虚拟服务器 软件 简单的说 就是 可以把一台主机 虚拟成 多台主机用 各虚拟机可以做独立的系统 一般是 网站应用 比较多 当然 也有人 用来 做游戏多开用

关于Xen,OpenVZ,KVM三大VPS虚拟化技术优劣势有哪些

OpenVZOpenVZ是操作系统级别的虚拟化技术,是底层操作系统上的一层应用,这意味着易于理解和低权重开销,一般来说也意味着更优的性能。但是OpenVZ配置起来比较灵活,给黑心服务商改低限制的机会。优势:现在外面卖的这种类型,许可的内存都超大,CPU也强劲,而且卖家很多,可比性也很强。性价比超高。劣势:超卖,没有不超卖的,导致各种石头盘,钻石盘。连带的cpu也被过度分割导致性能升值不如其标明的1/10。再有就是内存,基本上OpenVZ技术没有独占的,都是共享,别人多了你就少了,而且这种技术最大的劣势就是内存下来后直接就是当机。还有开设vpn各种不方便。XenXen是半虚拟化技术,它并不是一个真正的虚拟机,而是相当于自己运行了一个内核的实例,可以自由的加载内核模块,虚拟的内存和IO,稳定而且可预测。分Xen+pv+和Xen+hvm,区别就是pv只支持linux,而hvm支持win系统。优势:内存独占,虽然小但是保证分配的到。部分虚拟技术决定了就算是超卖也不会超太离谱。所以一般的母鸡就算超了,也很少导致石头盘。当然小鸡有pt就除外了。另外就是即使内存再低也不会当掉,只是会无响应一段时间。劣势:内存小,硬盘小,带宽小(以上3点均和同价位的openvz对比)。因为没法超卖了,为了赚钱只能把这3个基本配置降下来了。还有就是供应商残次不齐,而且大部分在说xen的时候都木有明说是pv还是hvm,其实pv的性能是优于hvm的。KVM优势:和xen类似,比xen更好的一点是,kvm是完全虚拟的,所以不分pv和hvm的区别,所有的kvm类+型的虚拟技术都可以装各种linux的发行版和各种win的发行版,不管供应商在主页有没有写明是否支持win,只要你配置够win运行,那就肯定可以装+的上去,只是方法的问题而已。劣势:恰恰因为kvm可以装任意类型的操作系统,导致了折腾帝甚至在128m的机器上装了win2003(上去+后直接所有的cpu和内存都用于硬盘IO了,不明白这些人想干神马)。其结果就是所有的kvm邻居都得看你周围邻居的脸色。这么说把,一个node下只要+有5、6台这种折腾帝,对不起,你的硬盘基本就是石头盘了。主机测评:www.zhujiceping.com

购买VPS选择openvz还是xen,两者有什么区别

XENXen 由剑桥大学开发,它是基于硬件的完全分割,物理上有多少的资源就只能分配多少资源,因此很难超售。可分为Xen-PV(半虚拟化),和Xen-HVM(全虚拟化)。Xen是不能超售内存和硬盘的,当母服务器只有16G内存以及100G硬盘时,当开Xen架构(任意一个虚拟化)的1G内存、25G硬盘的子机时,会直接占用服务器1G内存,以及25G硬盘,所以Xen的性能,相比OpenVZ在超售的情况下要好。Xen-PV:半虚拟化,所以它仅仅适用于linux系列VPS,但它的性能损失比较少,大概相对于母机的4%-8%左右。Xen-HVM:全虚拟化,可以安装windows或自由挂载ISO文件安装任意系统,由于是全虚拟化,所以性能损失较大,大概相对于母机性能损失8%-20%左右。Xen适用人群:预算较为充足,且希望VPS有较高性能的客户Xen注意事项:注意Xen-PV和Xen-HVM的区别。Xen可用系统:Xen-PV:纯Linux,Xen-HVM:支持Windows、Linux等。OpenVZOpenVZ(简 称OVZ)采用SWsoft的Virutozzo虚拟化服务器软件产品的内核,是基于Linux平台的操作系统级服务器虚拟化架构。这个架构直接调用母服 务器(母机)中的内核,模拟生成出子服务器(VPS,小机),所以,它经过虚拟化后相对于母服务器,性能损失大概只有的1-3%。当然 OpenVZ可以超售,意思味着一台服务器总共16G内存,他可以开出配置为1G内存×17台以上的子服务器。因为他的虚拟架构关系属于:客户用多少,就 扣除母服务器多少,所以OpenVZ架构的VPS较为便宜。但由于存在超售因素,如果服务商毫无休止的超售会导致服务器的性能急剧下降。OpenVZ另一个特点是,它是直接调用母服务器的内核,所以会导致部分软件无法使用,以及部分内核文件是无法修改。OpenVZ适用人群:新手、低预算客户OpenVZ注意事项:资源不是自己独有的,安装VPN服务需要注意检测虚拟网卡支持。OpenVZ可用系统:Linux(不支持Windows)xen会比OpenVZ贵,建议按需选择,更详细地说明可以查看这篇博文:http://www.138vps.com/vpsjc/315.html

利用 OpenWrt 实现 THU IPv6 + 宽带叠加完美双 WAN

经常玩 PT 的同学很可能也遇到过下面这个令人头疼的问题:目前大多数路由器并不支持 IPv6 的局域网转发,虽然可以利用 Lan 口互相是桥接的原理强行把路由器接成交换机模式实现校园网的 AP 接入,但是这样也同时失去了同一路由器下多设备的局域网互联,这给平时多设备的数据传输带来了很大的不便。为此,我们需要一台 OpenWrt 的路由器解决这个问题。 我的网络环境为: 设备环境为: 理想实现的效果: 路由器配置的最难点在于对 IPv6 的支持上,尽管 OpenWrt 三四年前的版本就已经可以转发 IPv6 流量了,但是依旧不完善,尤其是图形化界面的操作大不如 IPv4。 我通过整理一些大神的技术博客流传下来的资料,了解到现在 IPv6 转发有以下三种方式: 这是最早用的一种模式,即用路由器作为中继,路由器获得 IPv6 公网地址,获得数据后,转发给后面所有连接到路由器的局域网设备。 实现中继模式有以下两种方法: 众所周知,在 IPv4 网络下路由器是用 NAT 进公网到局域网地址转换的,NAT6 即为 IPv6 编写的 NAT 服务。网上也能搜到很多有关 NAT6 配置的方法,事实上,这种模式现在非常稳定,使用过程中完全察觉不到,和普通的 IPv4 路由没有什么区别。 不过 NAT6 模式下还是有个小问题,就是由于后面的设备都是局域网 IPv6 地址,加上 OpenWrt 可能对端口转发之类的支持不太好,所以挂 PT 时,utorrent 的连接性很差。 目前来看,对于教育网 IPv6 环境,这可能是最适合的一种转发方式。事实上,它和我们平时用到的反插网线强行交换机模式的原理很相似,通过设置将 IPv6 网线接口与 LAN 口桥接,这样 LAN 口相当于 AP 接入校园网 IPv6 环境;与此同时我们再叠加一个 IPv4 的宽带即可。这样的方式下,路由器本身没有 IPv6 地址,但是后端所有设备都有公网 IPv6,非常适合拿来刷 PT。不过由于路由器没有公网 IP,所以想用路由器挂 PT 的可能要考虑上述两种方式了。 对于用路由器做主力 NAS 的情况 : 首选 NAT6 对于每个设备都需要公网 IP 的情况 : 首选桥接 WNDR3800 上只有一个原生 WAN 口,我们首先要先通过 luci 界面的 交换机 设置 VLAN,把一个 LAN 口用作 WAN6 。 设置方式为: CPU 接口: 所有 VLAN 均需与之 已标记(Tagged) VLAN 连接的接口: 设置为 未标记(Untagged) 未与 VLAN 连接的接口: 设置为 关闭(Closed) 设置完后的 VLAN 如下 这样,连接在 LAN 1 的网口 VLAN 2 就可以用作一个新的 WAN 口。 在 luci 中找到 接口 ,比较新的 OpenWrt 中应该都自带添加了 WAN 和 WAN6 两个接口,如果没有的话,手动添加一个接口并命名为 WAN6 。 对于 WAN 口,正常设置即可,比较重要的一点是,因为我不想用移动宽带的 IPv6,要在 接口 - 高级设置 - 获取 IPv6 地址 设置为 已禁用 。 对于 WAN6 口,找到 物理设置 ,选择接口为 VLAN "eth0.2" (默认 IPv6 插在了刚刚设置的 LAN 1,宽带插在 WAN)。 之后就是重头戏,我们要设置 IPv6 的桥接。网上教程中提到需要安装 ebtables 去转发即将设置桥接的 WAN 口的 IPv4 数据,但是显然在我们这个双 WAN 的操作中是用不到的,因为校园网 IPv4 计流量而宽带不限量,故忽略这一步。 直接在 接口 - LAN - 物理设置 ,会看到已经有了一个桥接,这个是把 2 个 WLAN 接口及 LAN(eth0.1 即交换机设置中原有的 VLAN1)桥接在一起,使得 LAN 下的设备彼此互联。我们在这个已有的桥接中添加勾选 VLAN "eth0.2" 即把 WAN6 和全部 LAN 桥接在一起。 虽然原理讲起来非常复杂,但实际操作我们只需这样简单的一个操作,就完成了 IPv6 的桥接穿透。 当然,根据网上教程最后还需要在 启动项 中禁用 odhcp,以免它反复报错。 由于开机过程比较缓慢,在路由器刚启动时,DHCP 还没有来得及给设备分 IP,这时由于桥接,设备已经获取到了校园网的 IPv4 地址,这显然是我们不希望的。这个现象目前我的解决办法就是开机先让路由器缓一会儿再连网,还没有找到更好的办法。 理论上来说,通过 ip6tables 可以设置 IPv6 的端口转发,不过囧于 luci 没有很好地适配 ip6tables,所以需要在命令行操作,加之我自己没有需要,就懒得研究了,以后有空了没准会研究一下。

有一首歌是一个男的第一次见到一个女的对她一见钟情的,还有一句貌似是love is open the door 男女合唱的

歌名是【Love Is an Open Door】Love Is an Open Door - Kristen Bell&Santino FontanaOkay, can I just, say something crazy?I love crazy!All my life has been a series of doors in my faceAnd then suddenly I bump into youI was thinking the same thing! cuz likeI"ve been searching my whole life to find my own placeAnd maybe it"s the party talking or the chocolate fondueBut with you (but with you)I"ve got my place (I see your face)And it"s nothing like I"ve ever known beforeLove is an open doorLove is an open doorLove is an open doorWith you (with you)With you (with you)Love is an open doorI mean it"s crazy (what?!)We finish each other"s (sandwiches)That"s what I was gonna say!I never met someoneWho thinks so much like me (Jinx! Jinx again!)Our mental synchronizationCan have but one explanationYou and I were just meant to beSay goodbye (say goodbye) to the pain of the pastWe don"t have to feel it any moreLove is an open doorLove is an open doorLife can be so much moreWith you (with you)With you (with you)Love is an open doorCan I say something crazy? Will you marry me?Can I say something even crazier? Yes!

为什么地铁“本侧开门”的翻译是“This Door Open”?

这是祈使句,中文英文全都一样,都省略了主语。句中的门不是主语而是宾语,所以动词应该是第二人称,不能用第三人称。中文原意也是请打开本侧车门的意思。 开门关门,门都是宾语,是动作的施加对象,而不是做出动作的主体。不是主语。open的动作主体是乘客,这句话是对你们“乘客们”说的,是第二人称句,但是省略了“你们”这个主语。在汉语和英语中祈使句一般都可省略主语。

OpenGL 2D纹理单元&纹理翻转解决策略

首先,思考我们是如何将纹理对象传递给片元着色器? GLSL 中提供一个共纹理对象使用的内建数据类型,叫做 采样器(sampler) . 例如 , sampler1D , sampler2D , sampler3D 表示不同维度的纹理类型. 那么我们在片元着色器是如何获取一个纹理的? 我们简单声明一个纹理对象. uniform sampler2D ,将一个纹理添加片元着色器中. 我们可以使用 GLSL 内建的 texture 函数来采样纹理的颜色值. 你可能会奇怪为什么 sampler2D 变量是个 uniform ,我们却不用 glUniform 给它赋值. 使用 glUniform1i ,我们可以给纹理采样器分配一个位置值,这样的话我们能够在一个片段着色器中设置多个纹理。 一个纹理的位置值通常称为一个纹理单元 (Texture Unit) 。一个纹理的默认纹理单元是0,它是默认的激活纹理单元. 纹理单元的主要目的是让我们在着色器中可以使用多于一个的纹理。 通过把纹理单元赋值给采样器,我们可以一次绑定多个纹理,只要我们首先激活对应的纹理单元。就像 glBindTexture 一样,我们可以使用 glActiveTexture 激活纹理单元,传入我们需要使用的纹理单元: 激活纹理单元之后,接下来的 glBindTexture 函数调用会绑定这个纹理到当前激活的纹理单元,纹理单元 GL_TEXTURE0 默认总是被激活. 最终输出颜色是两个纹理的结合。 GLSL 内建的 mix 函数需要接受两个值作为参数,并对它们根据第三个参数进行线性插值。 如果第三个值是0.0,它会返回第一个输入;如果是1.0,会返回第二个输入值。输入0.2则会返回80%的第一个输入颜色和20%的第二个输入颜色,即返回两个纹理的混合色。 为了使用第二个纹理(以及第一个),我们必须改变一点渲染流程,先绑定两个纹理到对应的纹理单元,然后定义哪个 uniform 采样器对应哪个纹理单元: 注意, 我们使用 glUniform1i 设置 uniform 采样器的位置值,或者说 纹理单元 。通过 glUniform1i 的设置,我们保证每个 uniform 采样器对应着正确的纹理单元 OpenGL 要求 y 轴 0.0 坐标是在图片的底部的,但是图片的 y 轴 0.0 坐标通常在顶部

为什么我下载了opentelnet却打开不了 一打开就关闭。。。本电脑室WINDOW7的舰旗版本的 有关系吗?谢谢了。

opentelnet.exe 要在CMD命令提示符中运行就不会闪一下就不在了。你可以试试这个批处理,和opentelnet.exe的工作原理是一样的,所以他能开的这个也能开!这个小程序名为:opentelnet.bat@echo offtitle opentelnet cheng...MODE con: COLS=44 LINES=15:zjmclscolor 0afor /l %%i in (1,1,5) do echo.echo -简介- echo.echo 依靠ipc$来开启Telnet!echo 请按提示输入...echo.set/p ip= 输入IP: if /i "%ip%"=="q" exitset/p user= 用户名: if /i "%user%"=="q" exitset/p password= 密 码: if /i "%password%"=="q" exitecho.echo 正在建立ipc$连接...net use \%ip%ipc$ "%password%" /user:%user%IF ERRORLEVEL 1 goto errorIF ERRORLEVEL 0 goto ipc$ok:errorcolor 0cecho ipc$连接失败!请查看错误提示!按任意键返回...pause>nul & goto zjm:ipc$okclscolor 0aecho.echo.ping 127.1 -n 1 >nul 2>nulecho ipc$连接成功!ping 127.1 -n 1 >nul 2>nulecho 正在开启Telnet..ping 127.1 -n 1 >nul 2>nulsc \%ip% config TlntSvr start= demand >nul 2>nulsc \%ip% start TlntSvr >nul 2>nulping 127.1 -n 1 >nul 2>nulecho Telnet成功开启!!!ping 127.1 -n 1 >nul 2>nulecho 删除ipc$连接关系...ping 127.1 -n 1 >nul 2>nulecho.net use \%ip%ipc$ /del /yping 127.1 -n 1 >nul 2>nulecho.echo 是否登陆 %ip% 呢?echo y:是 n:否echo.set/p shr= 请选择: if /i "%shr%"=="y" goto ljif /i "%shr%"=="n" goto qxIF ERRORLEVEL 1 goto cw:cwclsfor /l %%i in (1,1,8) do echo.echo 输入错误! 按任意键返回! pause >nul & goto ipc$ok:ljstart telnet %ip%goto zjm:qxgoto zjm

什么是OME版本的操作系统?什么是open paper license?

OEM版本就是买某厂家的电脑产品,赠送你的某些正版操作系统OEM一般是不会销售的它是厂家赠送的!

opencv中有没有计算图像四大纹理特征能量,熵,相关性,惯性矩的函数?

opencv有一个灰度共生矩阵能计算这些,但是那个类是在cxcore中定义的,实际使用也发现该函数存在问题(内存泄露,根据网上的改完,你实际使用还是发现跟matlab的精度差很多尤其是相关性2,经常计算不出来。2.1是这样,2.2不清楚)。

(英语)outdoors与open air的区别?

如do exercise outdoors或者 do exercise in the open air。这里outdoors作副词,但是open air是名词短语。

openxyl读取有图表的EXCEL文件报错?

根据错误信息,您的程序似乎在读取Excel文件中的图表时出现了问题。可能是由于openpyxl库不支持读取Excel图表导致的。目前,openpyxl库不支持读取Excel图表的功能,可以使用其他库或工具来读取包含图表的Excel文件。以下是几种可供选择的解决方案:1. 使用pandas库:pandas库是一个流行的Python数据分析库,它可以读取包含图表的Excel文件,并将其转换为DataFrame对象。您可以使用以下代码读取Excel文件:```import pandas as pddf = pd.read_excel("your_file.xlsx", sheet_name="your_sheet_name")```2. 使用xlrd和xlwt库:这些库可以读取和写入Excel文件,但不支持图表。如果你只需要读取Excel文件中的字符和公式,这些库可能是一个好的选择。您可以使用以下代码读取Excel文件:```import xlrdworkbook = xlrd.open_workbook("your_file.xlsx")worksheet = workbook.sheet_by_name("your_sheet_name")```3. 将Excel文件转换为CSV文件:如果您只需要读取Excel文件中的数据,而不需要图表,那么将Excel文件转换为CSV文件可能是一个好的选择。您可以使用Excel软件将文件另存为CSV格式,然后使用Python的内置csv库读取CSV文件。

d3.js,openlayer,Leaflet或其他,哪些适合Web GIS的开发

d3.js 这个是可视化框架库,它和 leaflet, openlayers等应当是互补的关系。互补的例子:Map using leaflet.js and d3,js overlaid,javascript - Using d3 in Leaflet, d3 Integration。至于leaflet和openlayers3选哪一个,如果不想看代码,那么目前leaflet更热门一些,没什么包袱的话就选leaflet吧。如果想看看代码呢,那么:OpenLayers 3,http://leafletjs.com/examples/quick-start.html,看自己平时的编程习惯,哪个顺眼就选哪一个就是,两个在成熟度、社区、用户群体、插件、扩展性等方面都差不多。

直方图与gamma校正 — OpenCV& Python

··· import cv2 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D img_path = "C:/Users/WZChan/Desktop/" img = cv2.imread(img_path + "test_600x350_imwrite.jpg") hist_b = cv2.calcHist([img], [0], None, [256], [0, 256]) hist_g = cv2.calcHist([img], [0], None, [256], [0, 256]) hist_r = cv2.calcHist([img], [0], None, [256], [0, 256]) def gamma_trans(img, gamma): gamma_table = [np.power(x / 255.0, gamma)*255.0 for x in range(256)] gamma_table = np.round(np.array(gamma_table)).astype(np.uint8) img_corrected = gamma_trans(img, 0.5) cv2.imwrite(img_path + "gamma_corrected.jpg", img_corrected) hist_b_corrected = cv2.calcHist([img_corrected], [0], None, [256], [0, 256]) hist_g_corrected = cv2.calcHist([img_corrected], [0], None, [256], [0, 256]) hist_r_corrected = cv2.calcHist([img_corrected], [0], None, [256], [0, 256]) fig = plt.figure() pix_hists = [ [hist_b, hist_g, hist_r], [hist_b_corrected, hist_g_corrected, hist_r_corrected] ] pix_vals = range(256) for sub_plt, pix_hists in zip([121, 122], pix_hists): ax = fig.add_subplot(sub_plt, projection = "3d") for c, z, channel_hist in zip(["b", "g", "r"], [20, 10, 0], pix_hists): cs = [c] * 256 ax.bar(pix_vals, channel_hist, zs=z, zdir="y", color=cs, alpha=0.618, edgecolor="none", lw=0) ax.set_xlabel("Pixel Value") ax.set_xlim([0, 256]) ax.set_ylabel("Counts") ax.set_zlabel("Channels") plt.show() ···

Tear-open-outfit.是什么意思

Tear-open-outfit.拆装。

centos 6.5 怎么查看NSS的版本,或者怎么替换成OpenSSL??谢谢

怎么查看NSS的版本可执行命令yum info nss.x86_64在我的系统跟OpenSSL可共存并不冲突

Astrill 的 OpenWeb 是什么原理

用openvpn或stealthvpn吧openweb改的是"系统代理",比如我用proxy SwitchySharp,如果选择"直接连接",那么并不会被openweb代理;而用“使用系统代理设置”才会受影响。不知你懂没……再有一种是,把设置里的"set system proxy"取消,这样,用chrome的时候就不受openweb影响,需要自己设置代理项192.168.1.100:3213(端口号应该都是一样的,我用的路由器,本机ip是192.168.1.100)才有效。

Openswan和freeswan的区别?

openswan采用的是ipsec技术实现的VPN,由于在IP层实现,效率高,历史悠久,网上相关的配置文章也多,稳定。可以实现p2p,p2net,net2net. openvpn采用SSL技术实现,由于主要工作在应用层,效率低,如果单位流量比较大,还是不要用这个了。另个他采用了SSL技术,也不是我们通常所说的SSL VPN。 目前市场上比较流行的硬件VPN都是采用的ipsec技术。所以选择第一种对你以后更换硬件有帮助。 基本上来说,市场上的硬件VPN产品很少采用openvpn这样的技术的。

gap opening penalty 是什么意思

Gap opening penalty:空格罚分设置,增加一个空格就罚相应的分值,增加这一分值会降低空格出现的频率。一般扣5-10分

亮声open真名叫什么

都是脑瘫么?人家问的是亮声,不是亮声open,亮声不是只有一个open

小米路由3可以刷Pandorabox或OPENWRT吗

方法/步骤1首先,我们拿到手的小米路由3 ( 在以下文中以 MINI 代替 ),系统是官方稳定版的。要想刷 OpenWRT ( 在以下文中以 OP 代替 ) , 我们需要刷入 开发版 的 MINI 系统。 打开 miwifi 点 com 点击 ——> 下载 然后找到 小米路由器mini ROM ————> 开发版 0.4.96(8月29日更新) ————> 立即下载 下载好以后,我们需要用到一个U盘,随便 2G 或者 4G 都可以,把U盘格式化为 FAT32 格式。 然后把下载好的 NIMI 开发版 系统 复制到 U盘 根目录下,并改名为 miwifi.bin 路由器断电,插入U盘 ,按住复位键 ,路由器通电 ,指示灯闪烁的时候,放开复位键,然后等待刷机完成。 当MINI的指示灯由 黄色长亮 变成 蓝色长亮的时候,我们的MINI 开发版系统就刷好了。2 然后就是把路由器的网络接入方式设置好,并绑定你的 小米 帐号。 下一步,就是获取 ROOT 权限。 我们打开 miwifi 点 com ,点击 ————> 开放 下拉 点击 ————> 开启SSH工具 然后,再打开的网页中 ,记住你的 root密码 ,在后面的操作中用得到。 点击 ————> 下载工具包 把下载下来的 miwifi_ssh.bin 复制到刚才的U盘中, 这个时候,要把前面复制进去的开发版系统文件 miwifi.bin 删除掉。 同样的,断电,插入U盘,按住复位键,通电,在黄色指示灯闪烁的时候,放开复位键,等待.... 当指示灯变成 蓝色长亮的时候,说明我们获取到 root 权限了。可以接下去的操作了。 我们打开 h t t p : //downloads.openwrt.org.cn/PandoraBox/Xiaomi-Mini-R1CM/ 我们下载MINI 的 OP 程序 PandoraBox-ralink-xiaomi-mini-r474-20140703.bin 这个里面,已经安装了一些插件了3我用的是这一个。 PandoraBox-ralink-xiaomi-mini-r515-20140719.bin 这个里面,是纯净版的 OP 我们把它改一个名字,因为然面要把OP程序的名字打出来,所以我们就把前面的英文都删掉 , 改成 20140703.bin 然后我们在百度下载一个工具 winscp 下载好后,安装完成。 打开 winscp , 文件协议 我们选择 SCP ,主机名是路由器IP :192.168.31.1 ,端口是:22 点击登录 需要我们输入用户名, root 和 密码,这个密码,就是在上面,获取ROOT权限的时候,网页上显示的 root密码, 在弹出的窗口上,我们选择 是 。 然后在,右边我们打开 /tmp/ 左边找到下载好的 MINI 的 OP程序 ,把它从左边的框拖到右边的框,也就是把文件复制到 MINI 的 /tmp/目录下 到这里,我们就可以把 winscp 关掉了。 然后,再下载一个工具 百度 putty 它是一个绿色的小软件,不需要安装 ,下载后,直接打开 我们在 Host Name(of IP address) 下面的空白的地方,输入MINI 的IP地址 :192.168.31.1 在弹出的对话框上点 是 或者是 YES ,然后,输入帐号 root 回车 再输入 root密码, 注意:我们输入的root密码,在窗口上是不显示出来的,你只要在键盘上面,按出密码的字母和数字,然后回车就进入路由器了。 进入路由器以后,输入 cd /tmp/ 回车 然后,输入 mtd -r write /tmp/20140703.bin firmware 回车 然后就是在刷入OP到 MINI 里面了。 等待一下 大概40秒到一分钟的样子,我们按一下,方向键 上 。 然后路由器就自动 刷好 重启了 。4稍微等待一下,你可以用手机搜索一下周边的WIFI,你就会看到 PandoraBox开头的非常好的 WIFI 网络,不需要密码。 到了这一步,我们的MINI 也终于刷好了 OP 了 下面我们需要重新获取一下IP地址。 如果你的电脑是手动输入IP地址的,请改一下,让他自动获取,获取到IP地址后,我们在浏览器输入 192.168.1.1 回车 进入OP 了,点击管理 ,然后输入帐号和密码。默认的帐号是 root 密码是 admin 回车就可以进去了。 然后设置好相关的参数,修改系统时间和密码。 如果想要刷回 MINI 官方系统,请参照上面,刷入开发版系统操作。

sherlock opencv视觉软件怎么样

还不错。opencv是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库。其功能是,提供了丰富的视觉处理算法,其中一些是用C语言编写的。由于它的开源特性,它可以被正确处理,并且链接生成执行程序可以在不添加新的外部支持的情况下完全编译,因此许多人使用它来移植算法。

sherlock opencv视觉软件怎么样

还不错。opencv是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库。其功能是,提供了丰富的视觉处理算法,其中一些是用C语言编写的。由于它的开源特性,它可以被正确处理,并且链接生成执行程序可以在不添加新的外部支持的情况下完全编译,因此许多人使用它来移植算法。
 1 2 3 4 5 6  下一页  尾页