I am new to OpenCV with CMake and I am using it on Windows for the first time and facing some problem which I have mentioned below.
CMake Error at CMakeLists.txt:10 (find_package):
By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "OpenCV", but
CMake did not find one.
Could not find a package configuration file provided by "OpenCV" (requested
version 3.1.0) with any of the following names:
OpenCVConfig.cmake
opencv-config.cmake
Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set
"OpenCV_DIR" to a directory containing one of the above files. If "OpenCV"
provides a separate development package or SDK, be sure it has been
installed.
Can anyone suggest me a step-by-step solution for this.
Use vcpkg.exe to build open-source windows projects , including OpenCV, on the fly. Download vcpkg from github and build the vcpkg.exe. CMake download and cross-compiling( if any) will be perform automatically. Open Powershell window in administrative mode and type .\vcpkg install opencv . After successful install type .\vcpkg integrate install on the Powershell command prompt. Your project is ready and the libraries will be automatically inserted in your project. You can choose x86 or x84 or static/dynamic built.
Related
I'm trying to compile a application developed under Linux Debian for Windows 10 using the mingw compiler and cmake.
I configured a toolchain file according to the tutorial from kitware . This works great as long as I have no dependencies to libraries. Following the tutorial I have to install the libraries in the second path of this line:
SET(CMAKE_FIND_ROOT_PATH /usr/i586-mingw32msvc /home/<USER>/mingw-install )
I tried to download the library sources (e.g. for Termcap) but I have not really an idea how to install the library under the path /home/<USER>/mingw-install using MinGW.
Could somebody give a example for Termcap what commands I have to invoke or a link to a tutorial?
I have successfully compiled opencv 3.1 on a raspberry pi. Developing with the library works perfectly fine. Now I wanted to set up another, identical raspberry with opencv and to save the compilation time, my idea was to copy the binaries to the second raspberry.
So I copied the opencv directories including the build folder and tried to run sudo make install. Instead of using the already compiled files, compilation using cmake starts over again.
How can I convince the second raspberry's build environent that there is no need to recompile everything? On my original raspberry, I can run sudo make install on the exactly same files without recompilation. Installed dev-libraries are the same on both systems. Is this a cmake, make or a opencv specific problem?
I also tried to copy all .so and .h files from /usr/... directories, but then I run into further problems when other cmake projects try to locate the opencv package.
Build directory is not intended to be copied into other place or on another machine.
For deliver program to other machine you should use installed files, or, more generally, a package.
CMake is shipped with CPack, which can build the program from sources and create package contained all its deliverables.
You may create .deb package on the first Raspberry PI machine:
cpack -G DEB <source-dir>
and install it on the second machine using dpkg.
There are also "archive" packages like .tgz or .zip. Full list of CPack generators is described in wiki.
I have problem finding the configure command line tool. I downloaded Qt online installer for Linux 32-bit and it seems that the configure tool is not included. I have looked inside the Qt main directory. Does anyone have any idea where to find it or how to get it?
Thanks!
That tool is a part of Qt source code and is only useful when you're going to build Qt yourself. In that case, you shouldn't be downloading any installers; download the source code archive instead.
You can install the build-essential meta package to get a complete build environment for Ubuntu.
When trying to install Android Studio on my Linux Laptop, I get "Unable to Run mksdcard tool" From what I can tell from searching, this is usually caused by lacking the 32 bit compatibility libraries on 64 bit Linux, however I am running it on an ARMv7 processor, using the crouton project to use Linux on my Chromebook. I have tried install the recomended packages ending in i386, but the command line returned:
Reading Package Lists... Done
Building Dependendency Tree
Reading State information... Done
E: unable to locate package [Name of package here]
E: Couldn't find any package by Regex '[Name of package]'
Does anyone know what is causing this and how I can fix it?
I've discovered a workaround.
After a little searching, I've found that we can create executable binary of the tool for the ARMv7 platform ourselves! Whupee!
Head over to GitHub and pick up the source code, mksdcard.c. Download this to wherever you'd like, but make sure you download it as mksdcard.c and not as mksdcard.c.txt, which your browser might try to do. You can always rename the file later in case you accidentally save the filename incorrectly.
Over in your chroot environment, head to the directory where you downloaded the file.
Make sure you have the gcc compilation tools installed. Try running gcc -v in an attempt to see what version of GCC you have installed. If this doesn't work, you'll need to install GCC via sudo apt-get install gcc.
Run gcc -o mkdscard mksdcard.c. This uses GCC to compile the source code into something that can be executed. After compilation has completed, you can use ./mkscard to have Linux execute the binary file, which verifies that it works.
Navigate to your Android SDK Tools directory. This is usually ~/Downloads/Android/Sdk/tools. By running ls, you'll list the files and find the version of mksdcard that your Linux distribution doesn't understand how to run. (Running ./mksdcard on this file will confirm this.)
Backup the broken binary somewhere, then delete the copy in the tools folder. (I created a backups/ directory within the Android SDK Tools folder to move it to.)
Within the directory, use rm -r mksdcard to delete the old mksdard binary.
Finally, copy your compatible binary over to take it's place, e.g. cp ~/Downloads/mksdcard . (Copies the mksdcard binary we've created to the current directory ., the Android SDK Tools folder.)
Head back over to your Android Studio installer. In the dialogue complaining about mksdcard failing, hit Retry and the installation should continue. After it's finished, be sure to apply any updates that are recommended by the environment. Enjoy!
For newer versions eg. 3.1 C4 of Android Studio running with Ubuntu on ARM32 you will also need to place mksdcard in ~/Downloads/Android/Sdk/emulator (referencing like path from Alext T.).
I'm following this tutorial to compile this fork of Tesseract (an optical character recognition package) for Android. I'm at the step where I use Cygwin to build the NDK for the Tesseract Android project. I'm getting the following error when invoking ndk-build (from the tess-two directory):
c:/android-ndk-r8b-windows/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld.exe: cannot find ./obj/local/armeabi-v7a/libgnustl_static.a: Permission denied
What could be causing this error? On a side note, is there an easier way to get Tesseract up and running on Android?
Under Windows, run your command prompt as an administrator and try again:
Search->cmd.exe->Right-click->Run as Administrator
Cygwin is unnecessary--just use Windows itself. You can follow the README build instructions on the Tesseract fork. The blog you're following makes the process more complicated than necessary.
First check whether you are able to compile samples in the ndk.
And 'make' sure cygwin is installed.. Compilation problem occurs from installation or packages not yet installed. Early I worked with tesseract and have not found any problem.
Thus Tesseract OCR is used to refer a library to your project.. As example, check this . Use test-two and it worked.