Tag: C#的

探测器,提取器和匹配器的分类

我是新来的opencv,并试图实现两个图像之间的图像匹配。 为此,我试图理解特征描述符,描述符提取器和描述符匹配器之间的区别。 我遇到了很多条款,并试图在opencv文档网站上阅读有关条款,但我似乎无法将我的头围绕概念。 我明白了这里的基本区别。 特征检测与描述符提取的区别 但是在研究这个话题的时候我碰到了下面这些术语: FAST,GFTT,SIFT,SURF,MSER,STAR,ORB,BRISK,FREAK,BRIEF 我明白FAST,SIFT,SURF是如何工作的,但似乎无法弄清楚上面哪些只是检测器,哪些是提取器。 然后是匹配器。 FlannBased,BruteForce,knnMatch和其他一些可能。 经过一番阅读后,我发现某些匹配器只能用于某些提取器,如此处所述。 OpenCV ORB特征检测器如何工作? 给出的分类是相当清楚的,但只有几个提取器,我不明白浮动和uchar之间的区别。 所以基本上,可以请一个人 如上所述,根据float和uchar分类检测器,提取器和匹配器的types,还是其他types的分类? 解释float和uchar分类之间的差别还是使用哪种分类? 提及如何初始化(代码)各种types的检测器,提取器和匹配器? 我知道它要求很多,但我会非常感激。 谢谢。

ReSharper – 使用Microsoft.Contracts时可能的空分配

有什么方法可以向ReSharper表明由于devise合同需要检查而不会出现空引用? 例如,下面的代码将在第7和第8行的ReSharper中提出警告( Possible 'null' assignment to entity marked with 'NotNull' attribute ): private Dictionary<string, string> _Lookup = new Dictionary<string, string>(); public void Foo(string s) { Contract.Requires(!String.IsNullOrEmpty(s)); if (_Lookup.ContainsKey(s)) _Lookup.Remove(s); } 真奇怪的是,如果你删除了Contract.Requires(…)行,ReSharper消息就会消失。 更新 我通过ExternalAnnotationsfind了解决scheme,Mike在下面也提到了这个解决scheme。 下面是一个如何为Microsoft.Contracts中的函数实现的示例: 在ExternalAnnotations ReSharper目录下创build一个名为Microsoft.Contracts的目录。 接下来,创build一个名为Microsoft.Contracts.xml的文件并像下面这样填充: <assembly name="Microsoft.Contracts"> <member name="M:System.Diagnostics.Contracts.Contract.Requires(System.Boolean)"> <attribute ctor="M:JetBrains.Annotations.AssertionMethodAttribute.#ctor"/> <parameter name="condition"> <attribute ctor="M:JetBrains.Annotations.AssertionConditionAttribute.#ctor(JetBrains.Annotations.AssertionConditionType)"> <argument>0</argument> </attribute> </parameter> </member> </assembly> 重新启动Visual Studio,消息消失!

shared_ptr <>是为了weak_ptr <>作为unique_ptr <>是…什么?

在C ++ 11中,您可以使用shared_ptr<>与对象或variables以及weak_ptr<>build立所有权关系,以非所有方式安全地引用该对象。 您还可以使用unique_ptr<>与对象或variablesbuild立所有权关系。 但是,如果其他非拥有对象也想引用该对象呢? weak_ptr<>在这种情况下没有帮助。 原始指针是有帮助的,但带来了各种缺点(例如,它们可以自动初始化为nullptr,但是这是通过与std::*_ptr<>types不一致的技术来实现的)。 对于通过unique_ptr<>拥有的对象的非拥有引用,等价于weak_ptr<>是什么? 这是一个澄清的例子,类似于我正在做的游戏中的某些东西。 class World { public: Trebuchet* trebuchet() const { return m_trebuchet.get(); } private: std::unique_ptr< Trebuchet > m_trebuchet; }; class Victim { public: Victim( Trebuchet* theTrebuchet ) : m_trebuchet( theTrebuchet ) {} ~Victim() { delete m_trebuchet; // Duh. Oops. Dumb error. Nice if the compiler helped prevent this. […]

Xcode 8 Objective-C类别警告

我正在使用Xcode 8和Swift 3.0。 这个错误信息是什么意思? ld:警告:某些目标文件具有不兼容的Objective-C类别定义。 某些类别元数据可能会丢失。 包含Objective-C类别的所有文件应该使用相同的编译器进行构build。

为什么GCC调用libc的sqrt()而不使用它的结果呢?

使用GCC 6.3,下面的C ++代码: #include <cmath> #include <iostream> void norm(double r, double i) { double n = std::sqrt(r * r + i * i); std::cout << "norm = " << n; } 生成以下x86-64程序集: norm(double, double): mulsd %xmm1, %xmm1 subq $24, %rsp mulsd %xmm0, %xmm0 addsd %xmm1, %xmm0 pxor %xmm1, %xmm1 ucomisd %xmm0, %xmm1 sqrtsd %xmm0, %xmm2 […]

GCC在x86上的一个空程序的输出输出,win32

我写空的程序来惹恼从stackoverflow编码器,地狱。 我只是在探索GNU工具链。 现在下面可能对我来说太深了,但为了继续空的程序传奇,我已经开始研究C编译器的输出,即GNU消耗的东西。 gcc version 4.4.0 (TDM-1 mingw32) test.c的: int main() { return 0; } gcc -S test.c .file "test.c" .def ___main; .scl 2; .type 32; .endef .text .globl _main .def _main; .scl 2; .type 32; .endef _main: pushl %ebp movl %esp, %ebp andl $-16, %esp call ___main movl $0, %eax leave ret 你能解释一下这里发生了什么? 这是我的努力来理解它。 […]

C ++:比较两个向量

有什么办法比较两个向量? if (vector1 == vector2) DoSomething(); 注意:目前,这些向量不被sorting并包含整数值。

C在Visual Studio中编程

我可以使用Visual Studio学习C编程吗? 在新的项目菜单中,我可以selectVisual Basic,Visual C#,Visual C ++,Visual F#等,但是我没有看到“C”或“Visual C”。

在C中取消引用0的指针

有时,内存地址为0x0的数据非常有价值 – 以x86实模式IVT为例:它从0x0开始,包含指向中断处理程序的指针:0x00处的双字是指向除零error handling程序的指针。 但是,C11语言标准禁止解引用空指针[WG14 N1570 6.5.3.2],它们被定义为用0初始化的指针或用空指针初始化的指针[WG14 N1570 6.3.2.3],从而有效地禁止了第一个字节。 人们在需要时如何使用0x0?

有没有一个通用的Parse()函数,将string转换为任何types使用parsing?

我想根据generics返回types将string转换为genericstypes,如int或date或long 。 基本上像Parse<T>(String)这样的函数返回一个Ttypes的项目。 例如,如果一个int被传递,函数应该在内部执行int.parse 。