Are .Net OpenCV wrappers worth using? [closed] - c#

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
So we have this Image processing course at the university and we'll be using OpenCV extensively. Problem is, OpenCV uses C++ but I'm much more fluent in C# than C++. I know that there are wrappers for OpenCV (OpenCVDotNet, SharperCV, EmguCV,...) But I don't know which to choose.
My questions are :
Which one wraps most/all of OpenCV functionality ?
Are they even worth using ? (May not be updated often, lack functionality or speed,...)
Or should I be better off brushing my C++ skills?
Note : I know that my question is a possible duplicate of this one but it's old (from 2008) and things may have changed.

I have not used EmguCV, but I have used OpenCV for a while now.
From SharperCV's website:
The Emgu CV.Net wrapper is our current recommendation if you want to use OpenCV.
And, OpenCVDotNet looks more like an academic sandbox, so if it were me, I would use EmguCV for any of my research projects that involved C#. Mainly because it is being actively maintained, and it has the most features of the available wrappers today.

I had tried EmguCV. The range of functionalities it supports is fine. But if your project is something in which the speed is an issue, then it would be better to brush up your C++ skills.
I do not know much about other wrappers. I was in your same position once. I worked in emgucv during my academics and had to shift to c++ in my profession.
Believe me, you wont find it too difficult to move onto C++.

As an update, I can corroborate the answers previously given.
I have used both OpenCV with C++ and the EMGU Wrapper for both research and work and I agree partially with most people.
EMGU CV can be easy to learn and your code will be much easier to understand, it will require less lines of code and there is a decent range of functions you can call. But it is not complete.
Many functions will not provide all the originally intended functionality that you will find with OpenCV 3.0 e.g. FindNonZero() does not work exactly the same as the function that is wrapping and SetValue() gave me a hard time throwing runtime errors difficult to debug.
On the other hand, OpenCV provides great support compared to any other Wrapper you might find online and you will be working with the most up-to-date libraries. OpenCV 3.1 is a great release and I found no problems running it on Xcode or Visual Studio.
Therefore, I would recommend anyone wanting to immerse themselves into Computer Vision and Image Processing to go straight for OpenCV C++. If you just want to work on less complex problems you can opt for EMGU (I cannot recommend others as I am not familiar).

Related

C++ QT vs C# .NET for Windows Development [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I'm currently having some analysis paralysis in deciding which is better for me between C++ using the Qt framework, or C# using the .NET framework for developing a small to medium sided project I currently designing.
I have a little experience in both languages, slightly more in C++ however would probably still be considered a novice.
All the information I have read has been relativity outdated (being at least a couple of years old) and was wondering if there have been any updates that would swing the advantage one way or another, or if it really is just a matter of preference.
QT seems to support my particular requirements needs slightly better however the additional difficulty of working in C++ may offset taking me back to square 1.
My requirements are fairly simple, I will need rich text support, database connections, the ability to export to various file types and have a fairly dynamic GUI.
Anyone have any personally experiences or recommendations they wish to share?
I recommend to use Qt because:
It's cross-platform and covers wide range of operating systems (including mobile)
Writing in C++ gives you the opportunity to use libraries
like the STL, Boost, etc;
Using C++ gives you the benefit of running your app at high speed
It is opensource and has a fast speed in getting better
It has the a nice GUI designer and a very capable IDE (Qt Creator)
The API design is excellent and easy to use
It has a great documentation which is easy to read
It has the Qt translation system which enables you to have a multilingual app
The GUI layout system where the widgets resize themselves according to a layout makes everything much easier
The QML gives you the power to create fantastic GUI with great graphics and animations
It has great support for networking and connectivity(socket, SSL, www, IPC, ...)
It has QTestLib for testing the code
It has many language binding if you don't want to use C++
You can learn Qt easily if you know C++
All requirements you have given are completely feasible and easy to do in Qt
It doesn't require any VM for deployment but .NET needs that.
Your application will be cross platform
Creating custom UI is very much possible in Qt. You can create almost any kind of UI in Qt.

Can C# do everything C++ can do? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I'm a C# programmer for a few months, and lately I've been considering learning C++.
So my question is, is there anything C++ can do that C# can't do?
I know about the manual memory management in C++, but as long as I don't program operating systems or extremely heavy memory applications, I shouldn't worry about that too much (becuase I heard .NET handles automatic memory management very well).
But, can I program in C# everything that I can in C#? I also mean things like DLL injection, Registry Editing, Drivers and things like that.
Is C# considered as powerful as C++? If not, what can't C# do that C++ can?
C# and C++ are languages. It's somewhat elusive to define what a language "can" and "can't" do. One example of a thing that C++ can do and C# can't, is free the memory of an heap allocated object at will, without freeing other unused objects as well. But it's a thing that won't matter most of the time. (You can use Marshal.AllocHGlobal and Marshal.FreeHGlobal to allocate and deallocate memory like in C.)
The main reason why C++ can be used to write things like Windows drivers is because this is what Windows supports and facilitates. If one day Microsoft decided to support only C# and ditch C++, we'd be here saying that C# can do something that C++ can't (even if the languages magically remained as they are now, by then). Most likely it won't, and rightly so, because C++ is better fit for systems programming than C#. But hopefully you get the point.
Essentially, it's not a matter of the languages themselves, but their implementations, their tools and the world around them. For example, you can easily write an operating system in C#. Why? Because there's a proper tool for it. You can also write for embedded systems with non-real-time requirements. It has nothing to do with the language, again, it's because there's a tool for it.
That being said, do learn C++. Regardless of how it compares with other languages, it's absolutely useful.
C# is a slightly higher level language that C++. Its requirement of a managed runtime environment means that you wont be able to write an operating system, or even a device driver, in it. This sort of area is typically known as systems programming
However, there is a Microsoft research project currently underway into creating a systems program version of C#. It's headed up by Joe Duffy, the Windows threading guru, and if the rumors on the web are to be believed it will be called M#. Joe has posted some information about his progress on his blog.

How can I make my own graphic interface? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
I'v just learned a few languages (for 2 years now), and now I want to make programs with graphic interfaces. Thing is, I just don't know which languages to use.
What languages/programs (and what methods of these programs) are used to make programs with graphic interface? (I know that C# and JAVA are graphic, but I don't know what methods...)
What languages/programs (and what methods of these programs) are used to make applications to IPhone, Android ,and whatever ?
languages/programs (and what methods of these programs) are used to make/edit videos?
Thanks a lot!
Almost all programming languages have libraries that help you create a GUI (Graphical User Interface). Most programming languages, including C++, C#, and Java are general-purpose programming languages - you can use them to program whatever you want.
For Java for example, see this tutorial: Creating a GUI With JFC/Swing.
If you want to write an Android app, you'll program in Java.
For iOS and Mac OS X, you'll most likely write your app in Objective-C.
Pretty much all higher level languages use graphic interface. you just have to do your research to find out how to use GUI in each language. Applications used on the iPhone are written in Objective-C and Android uses java for their apps.
Your question is quite vague. But I'll give you some advice. Before asking this kind of question on stackoverflow, you really should make a search on your own with google.
About graphic interface using JAVA, you can use swing which is the most famous way to do it (especially if you're a beginner and want to familiarize with graphic interface development concepts). But there are a lot of other libraries to do GUI, for exemple if you want to do with 3D you have openGL lib or jMonkey (uses openGl).
About Android, it has its own SDK in java.
About iOS (iPhone), it is made with ObjectiveC.
And about C#, I don't know a lot about it but if you do a quite search on google you can find things like this.

Best framework for little 3D application [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
I want to write simple application with some 3D objects for Windows OS.
The application is very simple, like a gallery where we can move and see some pictures. When users go to the some picture and click on it a window will open and show picture with some information.
Which is the best framework for this task WPF, XNA, or something else? Application will be written in C#.
I can not say which is best, but I have done a while ago some things with the WPF 3D API and I liked it.
It was IMO very simple to use and the rendering seemed to be relatively fast. A really nice thing I found, was that it has an object-model that contains high-level-events such as mouse-down and click. Therefore you don't have to do much math. However, maybe provide also other APIs such high-level services, I don't know.
I would not try to create an action-game with it, but for a small app as you have described, I think it is worth a try.
Unity has been used for similar stuff. It can work on browsers (via a plug-in) or as a program, has a lot of documentation and most of the work involved in creating a 3D environment and interface is already done. Code can be written in Mono (open source C# implementation), JavaScript or a Boo, a modified Python scripting language.
It works in Windows, MacOS, iPhone, iPad and Android. And it is free in the standard version, or really cheap.
XNA is a little lower level, so it will require more work to get things started. It supports Windows, WP7 and Xbox 360.
See this discussion : WPF VS XNA

Looking for collective intelligence .Net / C# resources [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
Firstly, I realise that this is a very similar question to this one: Which are the good open source libraries for Collective Intelligence in .net/java?
... but all the answers to that one were Java centric so I am asking again, this time looking more for .Net (idealy C#) ideas.
A little background; I recently read Toby Segran's excellent book on CI, and I just got hold of Satnam Alag's book (which I am sure is also excellent, but I have only just opened it). These are Python and Java centric, I don't have any trouble reading the code samples, but as I am a C# developer it would be fun to play with some of these ideas in my native language. I've had a search of the web and SO and not come up with too much. In a way this is great news, maybe I could port something to .Net (suggestions welcome), but I'd also really like to take a look at any existing projects before I do this.
So, are there an CI fans out there working in .Net with OS projects, have I missed some glaringly obvious and interesting books/sites/blogs?
I realise CI is a pretty broad field, so to narrow it down a little I am primarily interested in the clustering / prediction /recommendations areas, but am open to other ideas.
Edit: Just spotted this book about to be published by Manning which may interest CI fans: Algorithms of the Intelligent Web.
Edit Clarification in response to comment by Moose; what I am looking for really is libraries, frameworks or larger-scale projects (idealy OS) that use CI techniques with .Net. Code samples are great, but as Moose said in his comment it is easy enough to take Java examples and port them. For example, there is an interesting looking project written in Java called WEKA, there is no reason I can't use this and experiment with it, I was just curious to know if there were similar things going on in .Net. I have just been browsing info on Lucene and I see that there is a C# port of that, so that's a start... are there any more out there?
Edit This is not C#, but it is .Net; Robert Pickering has started collection F# CI resources here. Looks interesting, but I'm still looking for C# info too.
Here's a link for a slope one predictor for rating-based collaborative filtering:
C# Implementation of Slope One
Microsoft Research ( full disclosure: I work at Microsoft, though not in the group that released this tool ) has just released a machine learning library in .NET called Infer.NET.
link text
You might want to check it out.
This library has:
Supervised
Perceptron
Kernel Perceptron
KNN
Decision Trees
Unsupervised
Hierarchical Clustering
KMeans
It is called Machine Learning for .NET.

Categories

Resources