Hello. I want to write a Powershell script on Windows to speed up the code compilation and execution.
At Linux I used this to compile at Terminal.
g++ -g -Wall -o resizeimage resizeimage.cpp 'pkg-config --cflags --libs opencv4'
And to run it, simply I use
./resizeimage lena.png
What is the Windows way to tell compiler to use OpenCV libraries?
Edit: I’d like to use g++ but if there are easier ways to do that with other compilers I am okay with those too.
berak
May 6, 2021, 8:22am
2
which compiler do you want to use ?
Sorry I forgot the at that. I use g++ but if there are easier ways to do that with other compilers I am okay with those too.
berak
May 6, 2021, 8:53am
4
well, you need to install / build the opencv libs first.
(if you want to use prebuilt libs, you’re bound to VS anyway)
something like:
cl myprog.cpp /I /path/to/opencv/includes /L /path/to/opencv/libs opencv_world452.lib
I actually built OpenCV by using CMake and I use OpenCV on Windows, compile and run my codes by using Visual Studio 2017 Community Edition but I want to make compilation and run at CMD/Powershell.
1 Like
cl myprog.cpp /I /path/to/opencv/includes /L /path/to/opencv/libs opencv_world452.lib
So do I have to write something like this?
cl myprog.cpp /I D:\OpenCV_with_CUDA\build\install\include\opencv2 /L D:\OpenCV_with_CUDA\build\install\x64\vc15\lib opencv_world452.lib
Or do I need to add specific path for the all headers and libs that I use in my C++ source file. Something like this.
cl myprog.cpp /I D:\OpenCV_with_CUDA\build\install\include\opencv2\core D:\OpenCV_with_CUDA\build\install\include\opencv2\core\cuda /L D:\OpenCV_with_CUDA\build\install\x64\vc15\lib\opencv_cudaarithm450.lib D:\OpenCV_with_CUDA\build\install\x64\vc15\lib\opencv_core450.lib D:\OpenCV_with_CUDA\build\install\x64\vc15\lib\opencv_core450d.lib opencv_world452.lib
By the way I don’t have opencv_world452.lib
in my build folders.
berak
May 6, 2021, 9:44am
8
/I D:\OpenCV_with_CUDA\build\install\include
is the correct include path (w/o opencv2)
yea, that was just an example (if you build from src, you will have “single module” libs)
linker path should be:
/L D:\OpenCV_with_CUDA\build\install\x64\vc15\lib
then you do not need the complete path to specific libs any more,
opencv_core450.lib opencv_imgproc450.lib opencv_highgui450.lib etc
note, that the libs ending with 450d
are debug libs, and should not be mixed with release ones !
(specify /DEBUG
on the cmdline for debug, similar to -g
with gcc)
it is very much recommended to write a CMakeLists.txt
for your project (according to the tutorial/example above), use cmake to generate a Makefile or visual studio project/solution or whatever you need, and then build from that .
as far as I’m aware, Visual Studio supports building of projects/solutions from the command line.
you can call MSVC’s cl.exe
directly but you should not because it’s error-prone and needlessly complicated to reproduce.
In the end this is what I am trying to achieve but in Windows’ Powershell.
#!/bin/bash
g++ -g -Wall -o resizeimage resizeimage.cpp `pkg-config --cflags --libs opencv4`
./resizeimage snow.jpg
echo -e
g++ -g -Wall -o parallelcode3 parallelcode3.cpp `pkg-config --cflags --libs opencv4` -fopenmp
imgName=("snow.jpg" "snow2.jpg" "snow3.jpg" "snow4.jpg" "snow5.jpg" "snow6.jpg")
for i in "${imgName[@]}"
do
echo Image Name: $i
./parallelcode3 $i
echo -e
done
And then just making a call
.\myPowershellScript.ps1
to automatically run executables with given arguments.
Did you have any progress?