Closed m-7761 closed 5 years ago
The intent of InitialSetup is for: A) One-time project setup after you clone the repo b) Switching between 32-bit and 64-bit builds (which requires cleanup of the other configuration)
Usually you only run it once and then later run GenerateProjectFiles if you are adding or removing source files.
That said, I could see switching over to an installed pre-compiled binary approach similar to what the boost library does, rather than doing the downloading and building process ourselves. The one advantage to downloading and building is that there are a bunch of compilation flags that are useful for enabling and disabling features depending on what you need. I could probably do another at the OpenCV compilation flags and make sure I'm not including libs I don't need anymore (like videoio?)
As for why I use OpenCV at all? It's for the following pieces of computer vision functionality:
My concern is maintainers need to test these scripts. So they should be modular. So they are not prohibitive to test/retest.
Especially right now the project seems in disarray. I know maintainers can knock that code out, but that runs the risk of submitting knocked out code into the live code. I think that conceptually opencv should not even be in the same file-tree. I'm curious about this myself.
In my profile tagline is github.com/nanoant/CMakePCHCompiler that I had to develop to implement PCH with CMake in order to even be able to build my COLLADA-DOM project code. Which incidentally is the project that kept me from looking at PSVRTracker for the last month and a half or so! It is the best PCH module if you think it can help. I always use PCH but for some projects (C++ templates heavy) it can be the difference between code compiling in 5 minutes versus 5 days.
What I'm wondering about OpenCV is if we were to trace its code, for a given application, and copy out the parts that are actually used by an application, I have a feeling that code could easy fit into a small source file. It's just my sense that it doesn't do anything especially complex. Most of the image algorithms for tracking that are built into it are so simple as to be useless. I suppose it doesn't matter because it actually builds itself with your setup. I don't think I've ever been successful building it, since it's website is so crazy and its instructions are maybe not the best.
P.S. I think "SolvePnP" is basically how I conceptualize this problem. Hopefully not naively. That's where I will focus my attention after I'm all set up.
Especially right now the project seems in disarray.
I don't disagree that there a things that can be done to improve the build process. But it just hasn't been that much of a priority for me given how little time I've had to work on this project the last 6 months. Personally, I'd rather invest that time on getting a tracking algorithm that works reliably. The entire point of this project was to be a testbed for PSVR tracking algorithms NOT an final tracking library. At least not yet. If that is something that interested you I could use the help.
What I'm wondering about OpenCV is if we were to trace its code, for a given application, and copy out the parts that are actually used by an application, I have a feeling that code could easy fit into a small source file.
I don't personally think the value you get out of a smaller source file outweighs no longer being able to update OpenCV or use it as a testbed for other tracking algorithms. At least not until the tracking algorithm is settled.
I have a feeling that code could easy fit into a small source file. It's just my sense that it doesn't do anything especially complex. Most of the image algorithms for tracking that are built into it are so simple as to be useless.
I would love to hear why specifically the algorithms I listed above are "simple as to be useless". Even the ones that seem trivial (color filtering for example) are slow when implemented without though to performance (i.e. multi-threading and/or running on the GPU). And nothing about SolvePnP is trivial. There are several research papers alone on how to make this algorithm work best. I'm sorry for being defensive on this point, but you are the first person I have come across that has made the claim that OpenCV is over complicating "simple algorithms". I have a hard time buy that argument.
No, I don't mean simple in any other sense than lines-of-code. And I don't actually know that answer. Whether things are accessible or not just comes down to having to help others get set up to help out. I imagine your goal is to fold this back into PSMoveService. In which case, if it's in disarray too, any fixes here would not matter at that stage.
I think it's interesting Sony decided to design the PSVR this way. I wonder if a PS5 set will continue with this unique design, or if it will be more mainstream technology.
I'm definitely available to help. If I have write-access to the repository I'm more likely to help. Generally the PR process is more than I am able to tolerate personally. I think it's good for certain kinds of contributions, but not for regular/casual collaboration.
Closing as this script is removed. Although probably should work on the README file, etc. to explain the new scripts.
Hey, I kind of thought that the automatic OpenCV download/install would park it in a shared system folder. Is there any way to make that happen?
Trouble is if InitialSetup is run, that is deleting the
deps/opencv
folder in there:I don't think that's necessary to attempt to reset the project space. Anyway, it's a giant job to download/build/install OpenCV. So it's not fun to do more than once. Ideally if OpenCV is already installed the download/build/install step should be avoidable. I'm interested in figuring out how to manage OpenCV myself, since it's a real beast. Anytime I consider using it I give up, because it's so overwhelming; and I frankly can't see what it does exactly; yet it's so popular.