This guide describes how to install and configure OpenCV 2.3.1 and its dependencies on Ubuntu. It is a compilation of my notes recorded during dozens of OpenCV installs on several different systems. This guide differs from other OpenCV guides in the following ways:
- This guide is comprehensive: you can start with a clean Ubuntu and successfully install OpenCV 2.3.1 by following this guide.
- This guide is for OpenCV 2.3.1. The other guides I found used previous versions of OpenCV.
- This guide includes all of the steps you need to use a webcam with OpenCV.
Credit and thanks go to FakeOutdoorsman and Sebastian Montabone for their excellent posts, upon which several of the steps in this guide are based.
If you need help troubleshooting OpenCV installation problems, see the companion guide “A Comprehensive OpenCV Installation Troubleshooting Guide.”
The Installation Procedure
To install and configure OpenCV 2.3.1, complete the following steps.
- Remove any installed versions of ffmpeg and x264 by entering the following command:
sudo apt-get remove ffmpeg x264 libx264-dev
- Get all the dependencies for x264 and ffmpeg by entering the following commands:
sudo apt-get update
sudo apt-get install build-essential checkinstall git cmake libfaac-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libva-dev libvdpau-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev texi2html yasm zlib1g-dev
- Download and install gstreamer by entering the following command:
sudo apt-get install libgstreamer0.10-0 libgstreamer0.10-dev gstreamer0.10-tools gstreamer0.10-plugins-base libgstreamer-plugins-base0.10-dev gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly gstreamer0.10-plugins-bad gstreamer0.10-ffmpeg
- Download and install install x264.
- Download a recent stable snapshot of x264 from ftp://ftp.videolan.org/pub/videolan/x264/snapshots/. The exact version does not seem to matter. To write this guide, I used version x264-snapshot-20110808-2245-stable.tar.bz2, but I have used previous versions too.
- Configure and build the x264 libraries by entering the following commands:
./configure --enable-static
make
sudo make install
- Download and install install ffmpeg.
- Download ffmpeg version 0.8.x from http://ffmpeg.org/download.html. Note: Versions of OpenCV prior to 2.3.1 require ffmpeg 0.7.x.
- Configure and build ffmpeg by entering the following commands in a terminal:
./configure --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-nonfree --enable-postproc --enable-version3 --enable-x11grab
make
sudo make install
- Download and install gtk by entering the following command:
sudo apt-get install libgtk2.0-0 libgtk2.0-dev
- Download and install libjpeg by entering the following command:
sudo apt-get install libjpeg62 libjpeg62-dev
- Download and install install v4l (video for linux).
- Download v4l-utils-0.8.5.tar.bz2 from http://www.linuxtv.org/downloads/v4l-utils/
- Build v4l by entering the following commands in a terminal:
make
sudo make install
- Download and install install OpenCV.
- Download OpenCV version 2.3.1 from http://sourceforge.net/projects/opencvlibrary/files/
- Use the following command to untar the source files
tar xvf OpenCV-2.3.1.tar.bz2
cd OpenCV-2.3.1/
mkdir build
cd build
cmake ..
- Check that the output of cmake includes the following text:
- found gstreamer-base-0.10
- GTK+ 2.x: YES
- FFMPEG: YES
- GStreamer: YES
- V4L/V4L2: Using libv4l
Note: In versions of OpenCV prior to 2.3.1, the binary digit 1 was used instead of the word YES, like this: FFMPEG: 1
.
- Run
make
- Run
sudo make install
- Configure Linux.
- Tell linux where the shared libraries for OpenCV are located by entering the following shell command:
export LD_LIBRARY_PATH=/usr/local/lib
Add the command to your .bashrc file so that you don’t have to enter every time your start a new terminal.
Alternatively, you can configure the system wide library search path. Using your favorite editor, add a single line containing the text
/usr/local/lib
to the end of a file named/etc/ld.so.conf.d/opencv.conf
. Using vi, for example, enter the following commands:sudo vi /etc/ld.so.conf.d/opencv.conf
G
o
/usr/local/lib
<Esc>
:wq! - Using your favorite editor, add the following two lines to the end of /etc/bash.bashrc:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH - Reboot.
After completing the previous steps, your system should be ready to compile code that uses the OpenCV libraries. The following example shows one way to compile code for OpenCV:
g++ `pkg-config opencv --cflags` my_code.cpp -o my_code `pkg-config opencv --libs`
References
- If you encounter problems installing OpenCV, see the companion guide, “A Comprehensive OpenCV Installation Troubleshooting Guide.”
- Sebastian Montabone has several articles on installing OpenCV and image processing. His web site is http://www.samontab.com/
- FakeOutdoorsman’s posted an excellent dependency install guide, which is located on the Ubuntu forums: http://ubuntuforums.org/showthread.php?t=786095
You have done an excellent Job
The best and most updated guide in the web Osman !
A glitch that keeps me off a final built:
When making OpenCv I get
“Linking CXX shared library ../../lib/libopencv_highgui.so
/usr/bin/ld: /usr/local/lib/libavcodec.a(avpacket.o): relocation R_X86_64_32S against `av_destruct_packet_nofree’ can not be used when making a shared object; recompile with -fPIC”
I tried both fffmpeg 0.8 as well as 0.7 (with appropriately removing first stuff). Any clue what to do? Ubuntu 10.10
Sorry my copy and paste missed sth. This is during
“Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_ffmpeg.o”
Several warnings and then :
“Linking CXX shared library ../../lib/libopencv_highgui.so
/usr/bin/ld: /usr/local/lib/libavcodec.a(avpacket.o): relocation R_X86_64_32S against `av_destruct_packet_nofree’ can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libavcodec.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [lib/libopencv_highgui.so.2.3.1] Error 1
make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
“
Did you try adding the –enable-pic option when you configure ffmpeg? You might also need to use –enable-pic for libraries used by ffmpeg, such as x264. For example, the configure command for x264 would be:
./configure –enable-static –enable-pic
Does your PC have an AMD processor?
Thanks for the great work by Osman!
I use x64 Ubuntu. By using –enable-pic option for both x264 and ffmpeg, I cleared the same errors.
While my current compilation is running on an intel 64-bit environment (laptop), I do plan to use OpenCV also on AMD 64-bit environment, i.e. my desktop (since it is lot more capable and powerful).
Are any of the relevant instructions are different for AMD processor based systems ?
Very nice guide.
Well done.
It is the best guide that I found.
Thanks for the compliments. I’m glad you like the guide.
Hello
In step 4 where do you extract the x264 folder? i have extracted it to the desktop and when i run the command in the terminal, it says the i have ‘no such file or directory’. thx
Under my home directory, I usually create a directory called src. The complete path name would be /home/osman/src. I save the downloaded tarfile in the src directory. Here is the complete set of commands:
cd /home/osman
mkdir src
cd src
mv /home/osman/Downloads/x264-snapshot-20110913-2245-stable.tar.bz2 .
tar xvf x264-snapshot-20110913-2245-stable.tar.bz2
cd x264-snapshot-20110913-2245-stable
In your situation, replace “osman” with your user name, replace “Downloads” with “Desktop” because that’s where you saved the tarfile, and replace “x264-snapshot-20110913-2245-stable” with the actual name of the file.
Then you can run configure. Hope that helps!
Thank you Osman! Great guide! I had the same problem with Danielsohn. You have to –enable-shared when you configure ffmeg and everything works fine. Thanks again!
Hiii,,
do u know how to install Open CV in windows
for Java Eclipse Platform.
plzz help me with this,,,i couldn’t get the answer from many searchings..
Sorry, I have not used the Eclipse IDE for Java. Perhaps someone else will reply.
Hello, thanks for your post, this was usefull for me. But I’m facing a problem, i get this error msg:
lib/libopencv_highgui.so.2.2.0: undefined reference to `gst_app_sink_peek_buffer’
../../lib/libopencv_highgui.so.2.2.0: undefined reference to `gst_app_sink_get_queue_length’
I’ve tried edit some code on gst config, but I get nothing.
It looks like a problem with gstreamer. Did you install gstreamer in step 3 of this guide? When you ran “cmake ..” in the opencv build directory, did the output say “GStreamer: YES”?
Yes. But I disable GStreamer and OpenCV was compiled right, it’s working. But I would have preferred to install it with GStreamer.
Here’s one more thing to try if you get unexpected errors: delete the opencv build directory, make a new build directory, run cmake again, and run make again. One time I got some strange errors that I could not explain. Deleting the build directory and creating a new build directory fixed the problem.
Thanks a lot for such a nice guide. It perfectly works 🙂
I have one question: when I try to add the new module cv2 I get an error
import cv2.cv as cv
ImportError: No module named cv2.cv
Why?
Thank you
I’m sorry, I don’t know the answer. I recommend that you ask this question on the OpenCV yahoo group.
Thank you for the guide, but what about the wrapper for python?
What I need to do to install also this?
I’m sorry, I have not used the python interface to OpenCV. The first step would be to install python. Here is a good reference: http://pythonicway.blogspot.com/2011/02/install-python-32-on-linux-ubuntu.html. Beyond installing python, I’m not sure what else you need to do. Perhaps someone else has some advice.
I tried compiling x264 and ffmpeg with –enable-pic configure option, and I’m still getting the following error when trying to compile openCV on Ubuntu 11.10:
Linking CXX shared library ../../lib/libopencv_highgui.so
/usr/bin/ld: /usr/local/lib/libavcodec.a(lpc_mmx.o): relocation R_X86_64_PC32 against symbol `ff_pd_1′ can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: ld returned 1 exit status
make[2]: *** [lib/libopencv_highgui.so.2.3.1] Error 1
make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
make: *** [all] Error 2
The error usually means that the module that failed to link was not compiled with -PIC. You said that you did use that option with the configure command, so it’s a bit odd. Here’s a couple suggestions:
I tried deleting all directories and starting from scratch. –enable-pic is used in the configure options for both x264 and ffmpeg. I removed all x264 and ffmpeg packages from ubuntu before compiling and installing said packages. Still getting the exact same error as posted above, asking me to recompile with -fPIC. Strange… any other suggestions?
Bumb.
I’m getting the same issue.
I’ve tried to use –enable-pic to configure both x264 and ffmpeg as well as –enable-shared when configuring ffmpeg.
Any help would really be appreciated. Thanks for all you’ve already done Osman
[ 33%] Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/grfmt_bmp.o
[ 34%] Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/grfmt_png.o
Linking CXX shared library ../../lib/libopencv_highgui.so
/usr/bin/ld: /usr/local/lib/libavcodec.a(lpc_mmx.o): relocation R_X86_64_PC32 against symbol `ff_pd_1′ can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: ld returned 1 exit status
make[2]: *** [lib/libopencv_highgui.so.2.3.1] Error 1
make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
make: *** [all] Error 2
From Gene’s comment below, he solved this problem by using both –enable-shared and –enable-pic. Make sure you
1) Use –enable-shared –enable-pic when configuring both x264 and ffmpeg
2) Install x264 and ffmpeg
3) Delete the OpenCV build directory and create a new build directory. I’ve seen problems where a incomplete build interferes with future builds.
Please keep us updated on your results!
Wow, thanks alot Osman and everyone else who contributed!
My issue was solved with a combination of adding –enable-shared to the configuration of X264 as well as updating my apts. THANKS!
Just a little tip for everyone out there who isn’t so comfortable with using a VI text editor.
Since Ubuntu wont let you modify some of the above system files with something like gedit and then save it in place, I did the following:
1) Open the file you want to edit
2) Copy all the text from the file you want to edit and edit/add any additional text
3) Save the file with the same name but to a different location (like the Desktop)
4) In the terminal navigate to the directory where you have saved your edited file
5) Run the following command:
sudo mv -f your_editedf_ile.extension /complete_directory_to_original_location/
That’ll force a move from where you dropped the edited file to where you want it (obviously you have to change the file name where it says your_editedf_ile.extension and the correct directory where it says complete_directory_to_original_location
For example: For the bash file here was the text I used to take it off the desktop and back into /etc/: sudo mv -f bash.bashrc /etc/
I first tried ffmpeg 0.8.5, and I got the error above. I then tried with ffmpeg 0.8.4 and I still got the same error.
My configure for ffmpeg is:
make clean
./configure –enable-gpl –enable-libfaac –enable-libmp3lame –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-libtheora –enable-libvorbis –enable-libx264 –enable-libxvid –enable-nonfree –enable-postproc –enable-version3 –enable-x11grab –enable-pic
make
sudo make install
for x264 (20111108-stable snapshot)
make clean
./configure –enable-static –enable-pic
make
sudo make install
I delete the OpenCV build directory and recreate it each time, but still get the same error.
rm -rf build
mkdir build
cd build
cmake ..
make (get error in this step)
Okay, after two days of messing with different options, I found that I had to add –enable-shared and –enable-pic to the ffmpeg config to get things working!
Glad you figured it out. Thanks for sharing the solution. Hopefully this info will help someone else with the same problem.
Yeah, this was exactly my case. Thanks Osman for the great tutorial and Gene for your additional help.
1+ for excellent tutorial and for Gene’s identification of the issue/solution.
Ran into exact set of issues and in very similar sequence.
Would be great if it could be incorporated back into the blog post as an edit.
Thx u guy. Very Good JOB
Many thanks Osman for this helpful tutorial. Greetings from Switzerland!
Greetings! I was lucky to stay in Neuchâtel for a week. It’s one of the most beautiful areas of the world!
Thanks for the guide!
On Ubuntu 11.10 64bit for OpenCV 2.3.1:
Instead of compiling ffmpeg myself I used the precompiled version from a ppa ( https://launchpad.net/~jon-severinsson/+archive/ffmpeg ).
Currently, the latest version available from the ppa is 0.8.4. It also updates libavcodec52 etc.
Works like a charm 🙂
Good to know. Thanks for the tip!
Thank you for the guide!
Is it missing the library for tiff?
When writing the guide, I debated whether or not to include all of the image format libraries, such as tif and jpeg2000. In the end, I decided not to include them. But I noticed that I included many of the libraries for video formats, so maybe it makes sense to include image format libraries too. I’ll add them when I next update the guide. Thanks for the suggestion.
very good,thank you. I know what is the wrong. I fond it is the problem of the version of ffmpeg.
Thanks for a great tutorial.
Thanks for the great tutorial. When building it on Ubuntu 11.10 x64 (Intel) with OpenCV 2.3.1, I get the error message during linking:
Linking CXX shared library ../../lib/libopencv_highgui.so
/usr/bin/ld: /usr/local/lib/libavcodec.a(avpacket.o): relocation R_X86_64_32S against `av_destruct_packet’ can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libavcodec.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [lib/libopencv_highgui.so.2.3.1] Error 1
make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
make: *** [all] Error 2
Do you have any tips to resolve this issue?
Thanks!
Did you try adding –enable-shared and –enable-pic to the ffmpeg configure command? Check out some of the other comments on this article for more tips on solving this issue.
Thanks! It worked. I’m sorry for not looking in the comments before. I’d recommend you to embed this tip into the post.
I’d also recommend embedding python build flags in opencv configure and swscale in ffmpeg from http://www.samontab.com/web/2011/06/installing-opencv-2-2-in-ubuntu-11-04/
Cheers and thanks!
Thanks for this tutorial! Really useful! It is best than the official one! Congrats!
It perfectly works on a newly installed Ubuntu 11.10! I just followed the steps as they are!
Thanks for the tutorial, but when i compile the code with “g++ `pkg-config opencv –cflags` `pkg-config opencv –libs` main.cpp -o eyeCenter” i get “undefined reference to” every opencv functions.
Can you help me?
Here are some ideas:
1. Are you sure you installed OpenCV by running “sudo make install” in the OpenCV build directory?
2. After you compile, but before you run your program, run this command: export LD_LIBRARY_PATH=/usr/local/lib
3. Make sure the output of the pkg-config command looks something like this:
$ pkg-config opencv –cflags
-I/usr/local/include/opencv -I/usr/local/include
$ pkg-config opencv –libs
-L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
1. yes sure
2. done
3.
$ pkg-config opencv –lib returns :
-L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
$ pkg-config opencv –cflags returns:
-I/usr/local/include/opencv -I/usr/local/include
Bue I can compile my program with :
g++ -o display DisplayImage.cpp -lopencv_core -lopencv_imgproc -lopencv_calib3d -lopencv_video -lopencv_features2d -lopencv_ml -lopencv_highgui -lopencv_objdetect -lopencv_contrib -lopencv_legacy
but when i run the program i have :
libopencv_core.so.2.3: cannot open shared object file: No such file or directory
Sorry, i solved the problem: a space before export LD_LIBRARY_PATH=/usr/local/lib
Thanks Osman
To add to the fun, compilation works, but trying to run the program now gives me the error while loading shared libraries: libopencv_core.so.2.3: cannot open shared object file.
hey sam, I am having the same problem as you.
error while loading shared libraries: libopencv_core.so.2.3
were you able to solve this problem? and how? please reply
I found the solution to this error.
export LD_LIBRARY_PATH=/usr/local/lib
this fixed the error, but i have to do it everytime i log in.
therefore i added this command at the end of my /etc/bash.bashrc
Hello Osman
First of all, thanks a lot for this great guide! I used it when I first intalled openCV in ubuntu 11.04 😛 Now I’m trying to do the same but in 11.10 and I have encountered the same problema as Mattia :S when I try to compile I keep receiving “unexpeted reference” to the opencv functions :S
My outputs por pkg-config are the same as yours:
$ pkg-config opencv –cflags
-I/usr/local/include/opencv -I/usr/local/include
$ pkg-config opencv –libs
-L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
I have tried compiling the way Mattia said:
g++ -o display programa_1.cpp -lopencv_core -lopencv_imgproc -lopencv_calib3d -lopencv_video -lopencv_features2d -lopencv_ml -lopencv_highgui -lopencv_objdetect -lopencv_contrib -lopencv_legacy
And all I got was an fatal error message telling me cv.h does not exist :S
Could you give me a hand please?
Thanks a lot!
Does the error occur when you compile or when you run your program?
I’m unfortunately getting the same errors as the person above and would really appreciate any help you could provide. A brief example is below:
samuel@samuel-Compaq-610:~/opencv/samples/cpp$ make lkdemo
g++ lkdemo.cpp -o lkdemo
/tmp/cc5GLGJD.o: In function `main’:
lkdemo.cpp:(.text+0xe9): undefined reference to `cv::VideoCapture::VideoCapture()’
lkdemo.cpp:(.text+0x1c0): undefined reference to `cv::VideoCapture::open(int)’
lkdemo.cpp:(.text+0x205): undefined reference to `cv::VideoCapture::open(std::basic_string<char, std::char_traits, std::allocator > const&)’
lkdemo.cpp:(.text+0x229): undefined reference to `cv::VideoCapture::isOpened() const’
lkdemo.cpp:(.text+0x28b): undefined reference to `cv::namedWindow(std::basic_string<char, std::char_traits, std::allocator > const&, int)’
lkdemo.cpp:(.text+0x2e1): undefined reference to `cv::setMouseCallback(std::basic_string<char, std::char_traits, std::allocator > const&, void (*)(int, int, int, int, void*), void*)’
lkdemo.cpp:(.text+0x35f): undefined reference to `vtable for cv::VideoCapture’
[…]
My pkg-config looks right, so I have no idea what’s wrong. I’ve been stuck here for a good few hours. 🙁
samuel@samuel-Compaq-610:~/opencv/samples/cpp$ pkg-config opencv –cflags
-I/usr/local/include/opencv -I/usr/local/include
samuel@samuel-Compaq-610:~/opencv/samples/cpp$ pkg-config opencv –libs
-L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
Strange, I just tried the solution someone mentioned above and it now works. I did: g++ -o test lkdemo.cpp -lopencv_core -lopencv_imgproc -lopencv_calib3d -lopencv_video -lopencv_features2d -lopencv_ml -lopencv_highgui -lopencv_objdetect -lopencv_contrib -lopencv_legacy
Do you know why this might work where using the pkg config doesn’t?
It’s odd that two people had this same problem in the last week. I will do more research. Are you using Ubuntu? If so, what version?
Can you please try running the following command before you compile:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
Please let me know the result. Thx.
PS. This should work for you:
g++ `pkg-config opencv –cflags` `pkg-config opencv –libs` lkdemo.cpp -o lkdemo
It’s a bit shorter than typing in the libraries by hand.
Thanks for the quick response! I exported the pkg_config_path before doing any of the below. I am using ubuntu 11.10.
g++ `pkg-config opencv –cflags` `pkg-config opencv –libs` lkdemo.cpp -o lkdemo
—
samuel@samuel-Compaq-610:~$ g++ `pkg-config opencv –cflags` `pkg-config opencv –libs` -o lkdemo lkdemo.cpp
/tmp/ccT4xgWe.o: In function `main’:
lkdemo.cpp:(.text+0xe9): undefined reference to `cv::VideoCapture::VideoCapture()’
lkdemo.cpp:(.text+0x1a2): undefined reference to `cv::VideoCapture::open(int)’
lkdemo.cpp:(.text+0x1e7): undefined reference to `cv::VideoCapture::open(std::basic_string<char, std::char_traits, std::allocator > const&)’
lkdemo.cpp:(.text+0x20b): undefined reference to `cv::VideoCapture::isOpened() const’
lkdemo.cpp:(.text+0x26d): undefined reference to `cv::namedWindow(std::basic_string<char, std::char_traits, std::allocator > const&, int)’
lkdemo.cpp:(.text+0x2c3): undefined reference to `cv::setMouseCallback(std::basic_string<char, std::char_traits, std::allocator > const&, void (*)(int, int, int, int, void*), void*)’
[…etc…]
g++ -I/usr/local/include/opencv/ -Wall -o lkdemo lkdemo.cpp -lopencv_core -lopencv_imgproc -lopencv_calib3d -lopencv_video -lopencv_features2d -lopencv_ml -lopencv_highgui -lopencv_objdetect -lopencv_contrib -lopencv_legacy
—
Note the first one failed, the second succeeded.
Thanks for the tutorial, it covers every detail, but I am having problems with the pkg-config step (I think).
I built opencv with the latest x264 stable, the last ffmpeg from git and the last OpenCV 2.3.1 in the site (which is called 2.3.1a) and compiled both packages with –enable-shared –enable-pic.
I am using a fresh install of Kubuntu 11.10 x64 (intel processor)
followed every step but when I run pkg-config opencv –libs
I get:
Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc’
to the PKG_CONFIG_PATH environment variable
No package ‘opencv’ found
I checked /usr/local/lib/pkgconfig and there is no opencv.pc
Any ideias?
Thanks
Can you please confirm that you completed step 10.2 in the procedure above?
i’m encountering the same problem as rodrigo.
Also went to http://www.samontab.com/web/2011/06/installing-opencv-2-2-in-ubuntu-11-04/ and double confirmed that i did the same thing exactly but still showing the same error.
Please help
Solved, my problem is that I forgot to run “make install” after “make”.
Sorry for any inconvenience caused…
Hello again Osman
I’m sorry for the delay in aswering you, the error ocurrs when I compile. I’ve tried exporting
export LD_LIBRARY_PATH=/usr/local/lib
and compiling like you said
g++ `pkg-config opencv –cflags` `pkg-config opencv –libs` histograma.cpp -o salida
and i’m still receiving cv.h: no such file or directory
Hey Osman,
I was able to install OpenCV without OpenNI and Primesense after looking at your tutorial…very thankful for that!(but spent lots of time trying to debug the errors!!)…
I am running Ubuntu 11.10 64-bit and OpenCV 2.3.1
I need to install OpenCV with OpenNI and Primesense now.
I installed OpenNI and Primesense according to the official website Readme.
But when I ‘make’ OpenCV…after enabling OpenNI and Primesense…
I run into the error shown below..
I have printed my whole cmake and make log info below…your help will be very useful..sorry for the clogging of info!
Thanks
Aditya
”
aditya@aditya-Inspiron-N5010:~/Downloads/OpenCV-2.3.1/release2$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
— Detected version of GNU GCC: 46 (406)
— Found OpenEXR: /usr/lib/libIlmImf.so
— Use NumPy headers from: /usr/lib/pymodules/python2.7/numpy/core/include
Traceback (most recent call last):
File “”, line 1, in
ImportError: No module named sphinx
CUDA_TOOLKIT_ROOT_DIR not found or specified
— Could NOT find CUDA (missing: CUDA_TOOLKIT_ROOT_DIR CUDA_NVCC_EXECUTABLE CUDA_INCLUDE_DIRS CUDA_CUDART_LIBRARY) (Required is at least version “4.0”)
— Parsing ‘cvconfig.h.cmake’
—
— General configuration for opencv 2.3.1 =====================================
—
— Built as dynamic libs?: YES
— Compiler: /usr/bin/c++
— C++ flags (Release): -Wall -Wno-long-long -pthread -ffunction-sections -O3 -DNDEBUG -fomit-frame-pointer -msse -msse2 -DNDEBUG
— C++ flags (Debug): -Wall -Wno-long-long -pthread -ffunction-sections -g -O0 -DDEBUG -D_DEBUG -ggdb3
— Linker flags (Release):
— Linker flags (Debug):
—
— GUI:
— GTK+ 2.x: YES
— GThread: YES
—
— Media I/O:
— ZLib: YES
— JPEG: TRUE
— PNG: TRUE
— TIFF: TRUE
— JPEG 2000: TRUE
— OpenEXR: YES
— OpenNI: YES
— OpenNI PrimeSensor Modules: YES
— XIMEA: NO
—
— Video I/O:
— DC1394 1.x: NO
— DC1394 2.x: YES
— FFMPEG: YES
— codec: YES
— format: YES
— util: YES
— swscale: YES
— gentoo-style: YES
— GStreamer: YES
— UniCap: NO
— PvAPI: NO
— V4L/V4L2: Using libv4l
— Xine: NO
—
— Other third-party libraries:
— Use IPP: NO
— Use TBB: NO
— Use ThreadingFramework: NO
— Use Cuda: NO
— Use Eigen: YES
—
— Interfaces:
— Python: YES
— Python interpreter: /usr/bin/python2.7 -B (ver 2.7)
— Python numpy: YES
— Java: NO
—
— Documentation:
— Sphinx: NO
— PdfLaTeX compiler: NO
— Build Documentation: NO
—
— Tests and samples:
— Tests: YES
— Examples: YES
—
— Install path: /usr/local
—
— cvconfig.h is in: /home/aditya/Downloads/OpenCV-2.3.1/release2
— —————————————————————–
—
— Configuring done
— Generating done
— Build files have been written to: /home/aditya/Downloads/OpenCV-2.3.1/release2
aditya@aditya-Inspiron-N5010:~/Downloads/OpenCV-2.3.1/release2$ make
[ 0%] Built target opencv_imgproc_pch_dephelp
[ 0%] Generating precomp.hpp.gch/opencv_imgproc_RELEASE.gch
[ 1%] Built target pch_Generate_opencv_imgproc
[ 2%] Built target opencv_core_pch_dephelp
[ 2%] Generating precomp.hpp.gch/opencv_core_RELEASE.gch
[ 2%] Built target pch_Generate_opencv_core
[ 5%] Built target opencv_core
[ 13%] Built target opencv_imgproc
[ 13%] Built target opencv_calib3d_pch_dephelp
[ 13%] Generating precomp.hpp.gch/opencv_calib3d_RELEASE.gch
[ 13%] Built target pch_Generate_opencv_calib3d
[ 13%] Built target opencv_features2d_pch_dephelp
[ 13%] Generating precomp.hpp.gch/opencv_features2d_RELEASE.gch
[ 13%] Built target pch_Generate_opencv_features2d
[ 13%] Built target opencv_flann_pch_dephelp
[ 13%] Generating precomp.hpp.gch/opencv_flann_RELEASE.gch
[ 14%] Built target pch_Generate_opencv_flann
[ 15%] Built target opencv_flann
[ 15%] Built target opencv_highgui_pch_dephelp
[ 15%] Generating precomp.hpp.gch/opencv_highgui_RELEASE.gch
[ 15%] Built target pch_Generate_opencv_highgui
[ 19%] Built target opencv_highgui
[ 22%] Built target opencv_features2d
[ 24%] Built target opencv_calib3d
[ 24%] Built target opencv_test_calib3d_pch_dephelp
[ 24%] Generating test_precomp.hpp.gch/opencv_test_calib3d_RELEASE.gch
[ 24%] Built target pch_Generate_opencv_test_calib3d
[ 24%] Built target opencv_ts_pch_dephelp
[ 24%] Generating precomp.hpp.gch/opencv_ts_RELEASE.gch
[ 24%] Built target pch_Generate_opencv_ts
[ 25%] Built target opencv_ts
Linking CXX executable ../../bin/opencv_test_calib3d
../../lib/libopencv_highgui.so.2.3.1: undefined reference to `cvCreateCameraCapture_OpenNI(int)’
collect2: ld returned 1 exit status
make[2]: *** [bin/opencv_test_calib3d] Error 1
make[1]: *** [modules/calib3d/CMakeFiles/opencv_test_calib3d.dir/all] Error 2
make: *** [all] Error 2
“
I’m sorry, I don’t know what is causing this error. Perhaps someone else will help.
See http://stackoverflow.com/q/8771334/342646
“the main issue was that x264 was being built statically. It’s essential to build the shared version of the library with –enable-shared”
Good guide!! Thx!
[…] Tutorial: A Comprehensive Guide to Installing and Configuring OpenCV 2.3.1 on Ubuntu « ozbots.org Add the command to your .bashrc file so that you don’t have to enter every time your start a new terminal. Alternatively, you can configure the system wide library search path. Using your favorite editor, add a single line containing the text /usr/local/lib to the end of a file named /etc/ld.so.conf.d/opencv.conf . […]
Problem:
Linking CXX executable ../../bin/opencv_test_calib3d
/usr/bin/ld: warning: libx264.so.120, needed by /usr/local/lib/libavcodec.so.53, not found (try using -rpath or -rpath-link)
/usr/local/lib/libavcodec.so.53: undefined reference to `av_opt_set@LIBAVUTIL_51′
/usr/local/lib/libavformat.so.53: undefined reference to `ff_mpegaudio_decode_header@LIBAVCODEC_53′
/usr/local/lib/libavformat.so.53: undefined reference to `ff_mpa_freq_tab@LIBAVCODEC_53′
/usr/local/lib/libavformat.so.53: undefined reference to `ff_toupper4@LIBAVCODEC_53′
/usr/local/lib/libavformat.so.53: undefined reference to `ff_flac_parse_block_header@LIBAVCODEC_53′
/usr/local/lib/libavformat.so.53: undefined reference to `ff_flac_is_extradata_valid@LIBAVCODEC_53′
/usr/local/lib/libavformat.so.53: undefined reference to `ff_mpeg4audio_get_config@LIBAVCODEC_53′
/usr/local/lib/libavformat.so.53: undefined reference to `ff_split_xiph_headers@LIBAVCODEC_53′
/usr/local/lib/libavformat.so.53: undefined reference to `ff_find_start_code@LIBAVCODEC_53′
/usr/local/lib/libavformat.so.53: undefined reference to `ff_dv_codec_profile@LIBAVCODEC_53′
/usr/local/lib/libavcodec.so.53: undefined reference to `av_get_media_type_string@LIBAVUTIL_51′
/usr/local/lib/libavformat.so.53: undefined reference to `ff_dirac_parse_sequence_header@LIBAVCODEC_53′
/usr/local/lib/libavcodec.so.53: undefined reference to `x264_encoder_open_120′
/usr/local/lib/libavcodec.so.53: undefined reference to `av_sample_fmt_is_planar@LIBAVUTIL_51′
/usr/local/lib/libavformat.so.53: undefined reference to `ff_mpeg4audio_sample_rates@LIBAVCODEC_53′
/usr/local/lib/libavformat.so.53: undefined reference to `ff_aac_parse_header@LIBAVCODEC_53′
/usr/local/lib/libavcodec.so.53: undefined reference to `av_samples_get_buffer_size@LIBAVUTIL_51′
/usr/local/lib/libavformat.so.53: undefined reference to `ff_frame_rate_tab@LIBAVCODEC_53′
/usr/local/lib/libavformat.so.53: undefined reference to `ff_flac_parse_streaminfo@LIBAVCODEC_53′
/usr/local/lib/libavformat.so.53: undefined reference to `ff_mpa_bitrate_tab@LIBAVCODEC_53′
/usr/local/lib/libavformat.so.53: undefined reference to `ff_dv_frame_profile@LIBAVCODEC_53′
/usr/local/lib/libavformat.so.53: undefined reference to `ff_mpa_decode_header@LIBAVCODEC_53′
/usr/local/lib/libavformat.so.53: undefined reference to `ff_copy_pce_data@LIBAVCODEC_53′
/usr/local/lib/libavformat.so.53: undefined reference to `ff_ac3_parse_header@LIBAVCODEC_53′
collect2: ld returned 1 exit status
make[2]: *** [bin/opencv_test_calib3d] Error 1
make[1]: *** [modules/calib3d/CMakeFiles/opencv_test_calib3d.dir/all] Error 2
make: *** [all] Error 2
I built opencv with the latest x264 stable, the last ffmpeg from git and the last OpenCV 2.3.1 in the site (which is called 2.3.1a) and compiled both packages with –enable-shared –enable-pic.
I am using ubuntu 10.04 x32 (intel processor)
If you used git to get ffmpeg, you might have grabbed version 0.9. I have not tested version 0.9. Can you try downloading the tarball for ffmpeg 0.8 and installing that version?
Thank you very much! It worked very well, not as many other guides I found around.
By the way, may be it’s not necesary to reboot after creating /etc/ld.so.conf.d/opencv.conf file, just running:
sudo ldconfig /etc/ld.so.conf
Thanks for the tip. I’ll make the correction in the next revision of the guide.
Hey, thanks a lot! I was trying to make OpenCV initialize my cam for the past week. Finally it started working after following this tutorial 🙂 Kudos!
I am guessing that at least some of the libraries in the output of
pkg-config opencv –libs
are archive libraries. It is incorrect to put archive libraries before sources that need them (test_1.cpp in this case): the order of sources and libraries on the link line matters.
Try
g++ -o test_1 test_1.cpp `pkg-config opencv –cflags –libs`
thanks alot this worked for me. I was also having problem compiling my code. Everything above faild but this simple trick worked.
Thank you for all the tutorial and all the tips…
These may help others:
I’m was struggling to get openCV 2.3.1 to see ffmpeg. I’ve tried both ffmpeg 0.7.8 and ffmpeg 0.8.7 , using –enable-pic –enable-shared . I’ve tried sudo ldconfig , but the problem remained.
It compiled, but the /opencv_test_highgui Highgui_FFmpeg_WriteBigVideo fails with a segmentation fault and a warning about
“Using network protocols without global network initialization. Please use avformat_network_init(), this will become mandatory later.”
It seems part of ffmpeg was installed in the directory it was built in.
The fix was :
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/nick/ffmpeg-0.7.8
======
Separately, it may save others time to know that the test data can be downloaded by :
snv co https://code.ros.org/svn/opencv/tags/2.3.1/opencv_extra/
and the environment variable needs to be set :
export OPENCV_TEST_DATA=[insert directory path here]/opencv_extra/testdata
Thank you again for an excellent tutorial.
Nick
Hi. Just wanted to say that I kept getting a linker error “recompile with -fPIC”. Worked couple of hours on it. Finally everything worked when I added “–enable-shared” to the configuration of ffmpeg.
A colleague successfully built the lib without the aforementioned flag.
This is a common problem. I don’t know why only some people get this error. Search the other comments for “fPIC” to see how other people solved this issue. What type of processor do you have? Is it AMD or Intel?
Great Guide. Thanks for putting it together!!
Great article. Very useful. Thx.
I was also getting the error:
“Linking CXX shared library ../../lib/libopencv_highgui.so
/usr/bin/ld: /usr/local/lib/libavcodec.a(avpacket.o): relocation R_X86_64_32S against `av_destruct_packet_nofree’ can not be used when making a shared object; recompile with -fPIC
To fix it I configured x264 with –enable-shared instead of –enable-static
Great Guide indeed! Only worked after reading all the comments though. I suggest you put the –enable-shared and –enable-pic information in the guide itself to complete it. Exelent work though 🙂
Given how many people need to use the –enable-pic option, I agree that I should add this info in the guide itself. I’ll make the addition in the next update. Thanks for the feedback.
an error was encountered during prior to the opencv installation – when making the v4l, one error was given as ‘ QMainWindow: No such file or directory’. Anyway, v4l was installed via synaptic package manager, and in the opencv congifuration list the v4l item showed -using v4l correctly.
cheers
I am having problems with my build of opencv 2.3.1. Used –enable-pic and –enable-shared for both x264 and ffmpeg. It falls oevr at 19% with the following errors
make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_ffmpeg.o] Error 1
make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
make: *** [all] Error 2
Please help!!!!
Sorry, here is some more of the error dump.
is there a problem with my ffmpeg or some missing libraries????
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:547:13: error: ‘CODEC_TYPE_VIDEO’ was not declared in this scope
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘bool CvCapture_FFMPEG::grabFrame()’:
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:640:34: error: ‘avcodec_decode_video’ was not declared in this scope
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp: In function ‘const char* icvFFMPEGErrStr(int)’:
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:917:10: error: ‘AVERROR_NUMEXPECTED’ was not declared in this scope
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:921:10: error: ‘AVERROR_NOFMT’ was not declared in this scope
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:923:10: error: ‘AVERROR_IO’ was not declared in this scope
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:925:10: error: ‘AVERROR_NOMEM’ was not declared in this scope
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp: In function ‘AVStream* icv_add_video_stream_FFMPEG(AVFormatContext*, CodecID, int, int, int, double, int)’:
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1012:70: error: ‘CODEC_TYPE_VIDEO’ was not declared in this scope
In file included from /home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg.cpp:45:0:
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘void CvVideoWriter_FFMPEG::close()’:
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1298:3: warning: ‘int url_fclose(AVIOContext*)’ is deprecated (declared at /usr/include/libavformat/avio.h:279) [-Wdeprecated-declarations]
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1298:20: warning: ‘int url_fclose(AVIOContext*)’ is deprecated (declared at /usr/include/libavformat/avio.h:279) [-Wdeprecated-declarations]
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘bool CvVideoWriter_FFMPEG::open(const char*, int, double, int, int, bool)’:
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1339:41: error: ‘guess_format’ was not declared in this scope
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1367:31: error: ‘av_alloc_format_context’ was not declared in this scope
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1411:9: warning: ‘int av_set_parameters(AVFormatContext*, AVFormatParameters*)’ is deprecated (declared at /usr/include/libavformat/avformat.h:1336) [-Wdeprecated-declarations]
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1411:35: warning: ‘int av_set_parameters(AVFormatContext*, AVFormatParameters*)’ is deprecated (declared at /usr/include/libavformat/avformat.h:1336) [-Wdeprecated-declarations]
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1415:5: warning: ‘void dump_format(AVFormatContext*, int, const char*, int)’ is deprecated (declared at /usr/include/libavformat/avformat.h:1458) [-Wdeprecated-declarations]
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1415:35: warning: ‘void dump_format(AVFormatContext*, int, const char*, int)’ is deprecated (declared at /usr/include/libavformat/avformat.h:1458) [-Wdeprecated-declarations]
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1479:13: warning: ‘int url_fopen(AVIOContext**, const char*, int)’ is deprecated (declared at /usr/include/libavformat/avio.h:278) [-Wdeprecated-declarations]
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1479:52: warning: ‘int url_fopen(AVIOContext**, const char*, int)’ is deprecated (declared at /usr/include/libavformat/avio.h:278) [-Wdeprecated-declarations]
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1485:5: warning: ‘int av_write_header(AVFormatContext*)’ is deprecated (declared at /usr/include/libavformat/avformat.h:1394) [-Wdeprecated-declarations]
/home/andrew/Downloads/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1485:25: warning: ‘int av_write_header(AVFormatContext*)’ is deprecated (declared at /usr/include/libavformat/avformat.h:1394) [-Wdeprecated-declarations]
make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_ffmpeg.o] Error 1
make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
make: *** [all] Error 2
I have some info about this error in my other article: http://ozbots.org/opencv-install-troubleshooting/. Can you check if that info solves your problem?
hi,djdm,
I have the same problem with you on my new debian 6.0.4 system. I check the ./configure result and I found the avformat.h was not found, so it must be the problem. I solved this by typing this in the terminal:
sudo apt-get -t squeeze-backports install libavformat-dev
Great, accurate, and reliable tutorial. After my previous system crashed I had to reinstall everything from scratch and OpenCV would not install because of ffmpeg being < 0.8. Following this tutorial made it build flawlessly.
Thanks ..
This is very helpful installation guide .. rather i should say it is has every step correct which is normally not expected .
Very good job , thanks .
I’m glad you found it useful.
Thanks! This worked for me. I initially had issues with the newer version of ffmpeg (0.8), and then I reverted to 0.7 and followed this guide. I am using OpenCV 2.3.1.
Thanks @Osman for this excellent, step-by-step tutorial and also the troubleshooting info, however inspite of following all steps, I’ve stumbled upon warnings (which I am willing to ignore for now) and errors (that stump my build).
They go like —
[ 27%] Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_ffmpeg.o
In file included from /home/icarus/Work/MachineVision/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg.cpp:45:0:
/home/icarus/Work/MachineVision/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘void CvCapture_FFMPEG::close()’:
/home/icarus/Work/MachineVision/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:451:9: warning: ‘void av_close_input_file(AVFormatContext*)’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:1416) [-Wdeprecated-declarations]
/home/icarus/Work/MachineVision/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:451:31: warning: ‘void av_close_input_file(AVFormatContext*)’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:1416) [-Wdeprecated-declarations]
home/icarus/Work/MachineVision/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘void CvVideoWriter_FFMPEG::close()’:
/home/icarus/Work/MachineVision/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1298:20: error: ‘url_fclose’ was not declared in this scope
/home/icarus/Work/MachineVision/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘bool CvVideoWriter_FFMPEG::open(const char*, int, double, int, int, bool)’:
/home/icarus/Work/MachineVision/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1411:35: error: ‘av_set_parameters’ was not declared in this scope
/home/icarus/Work/MachineVision/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1415:35: error: ‘dump_format’ was not declared in this scope
/home/icarus/Work/MachineVision/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1442:15: warning: ‘int avcodec_open(AVCodecContext*, AVCodec*)’ is deprecated (declared at /usr/local/include/libavcodec/avcodec.h:3662) [-Wdeprecated-declarations]
/home/icarus/Work/MachineVision/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1442:36: warning: ‘int avcodec_open(AVCodecContext*, AVCodec*)’ is deprecated (declared at /usr/local/include/libavcodec/avcodec.h:3662) [-Wdeprecated-declarations]
/home/icarus/Work/MachineVision/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1479:42: error: ‘URL_WRONLY’ was not declared in this scope
/home/icarus/Work/MachineVision/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1479:52: error: ‘url_fopen’ was not declared in this scope
/home/icarus/Work/MachineVision/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1485:25: error: ‘av_write_header’ was not declared in this scope
make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_ffmpeg.o] Error 1
make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
make: *** [all] Error 2
I am using the latest ffmpeg snapshot downloaded yesterday. And, going through the troubleshooting steps, don’t find anything similar.
While I’ve read at several places that OpenCV-2.3.1 supports ffmpeg-0.8, but do I really now need to go back to ffmpeg-0.7 ?
I have used ffmpeg 0.8 with OpenCV 2.3.1, so I know it works. I have seen your type of error when a previous build failed and I try to run make a second time in the same directory. Can you try deleting the build directory, creating a new build directory, and running cmake and make again? Let me know the result.
Thanks for taking time to reply, @Osman.
I realized (eventually) that I wasn’t using ffmpeg-0.8 at all, but the latest snapshot which is based on ffmpeg-0.10 ! I reverted back to using the tagged “0.8” snapshot of ffmpeg, and able to progress further, although getting stuck with another error, which has been reported before by Danielsohn on September 4, 2011 at 6:42 am, and you’ve provided an answer to. Shall be trying that out shortly.
great job, thanks…
I used –enable-pic –enable-shared for ffmpeg and x260 and everything was ok.
osman,when i try to compile, i am getting this error…
gibinjoe@ubuntu:~/workspace/ipone$ g++ ‘pkg-config opencv –cflags’ ‘pkg-config opencv –libs’ iptwo.cpp -o iptwo
g++: pkg-config opencv –cflags: No such file or directory
g++: pkg-config opencv –libs: No such file or directory
g++: iptwo.cpp: No such file or directory
g++: no input files
the
$ pkg-config opencv –cflags
$ pkg-config opencv –libs
commands are givin the proper ouptus
what could be the problem
amazing…thank you so much. tracking all those dependencies and figuring out all those configure flags…wow man. great work!
When running sudo make && sudo make install of v4l-utils I get:
g++ -c -m64 -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I../libv4l2util -I../../lib/include -I../../include -I. -o qv4l2.o qv4l2.cpp
In file included from qv4l2.cpp:20:0:
qv4l2.h:23:23: ödesdigert fel: QMainWindow: Filen eller katalogen finns inte
kompilering avslutad.
thank you so much for this tutorial,but I have the same question as Sam.
when I compiler:
/tmp/cc2LsKTl.o: In function `main’:
rimage.cpp:(.text+0x19): undefined reference to `std::allocator::allocator()’
rimage.cpp:(.text+0x33): undefined reference to `std::basic_string<char, std::char_traits, std::allocator >::basic_string(char const*, std::allocator const&)’
rimage.cpp:(.text+0x3e): undefined reference to `std::allocator::~allocator()’
rimage.cpp:(.text+0x58): undefined reference to `cv::imread(std::basic_string<char, std::char_traits, std::allocator > const&, int)’
rimage.cpp:(.text+0x7f): undefined reference to `std::allocator::allocator()’
rimage.cpp:(.text+0x99): undefined reference to `std::basic_string<char, std::char_traits, std::allocator >::basic_string(char const*, std::allocator const&)’
rimage.cpp:(.text+0xac): undefined reference to `cv::namedWindow(std::basic_string<char, std::char_traits, std::allocator > const&, int)’
rimage.cpp:(.text+0xb7): undefined reference to `std::basic_string<char, std::char_traits, std::allocator >::~basic_string()’
rimage.cpp:(.text+0xc2): undefined reference to `std::allocator::~allocator()’
rimage.cpp:(.text+0xd4): undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)’
rimage.cpp:(.text+0xdf): undefined reference to
………….
…………
When I try :
g++ -I/usr/local/include/opencv/ -Wall -o lkdemo rimage.cpp -lopencv_core -lopencv_imgproc -lopencv_calib3d -lopencv_video -lopencv_features2d -lopencv_ml -lopencv_highgui -lopencv_objdetect -lopencv_contrib -lopencv_legacy
it work,but how to solve this problem without long command?
Really great work! Fixed my 11.10 installation and got my webcam working.
Thank you for this excellent guide. By far the most current and comprehensive guide. After spending hours combining bits and pieces from all over the net, I finally stumbled upon your guide and everything works like a charm!
Note. to compile opencv with python support, use this configure statement:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON -D BUILD_EXAMPLES=ON ..
and don’t for get to install numpy before you compile opencv. See also http://opencv.willowgarage.com/wiki/InstallGuide%20%3A%20Debian
For everybody having problems with compiling OpenCV on AMD64 systems, the following site is a must read: http://thebitbangtheory.wordpress.com/2011/10/23/how-to-install-opencv-2-3-1-in-ubuntu-11-10-oneiric-ocelot-with-python-support/
It specifies additional configure switches for x264 and ffmpeg to make OpenCV compile without any problems.
I am struggling with the last stage when i try and type:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
into the bash.bashrc file i get the message:
gedit could not back up the old copy of the file before saving the new one. You can ignore this warning and save the file anyway, but if an error occurs while saving, you could lose the old copy of the file. Save anyway?
when i click save anyway nothing happens. Why is this not saving?
It sounds like you don’t have permission to edit the file. Try typing “sudo” before the edit command, like this “sudo gedit /etc/bash.bashrc”. Let me know if that doesn’t work.
Thankyou very much Osman that has done it for me! This is a great guide!
I am having a problem running opencv functions when i try and run opencv_performance i get the error message:
opencv_performance: error while loading shared libraries: libavcodec.so.52: cannot open shared object file: No such file or directory
Is this a linking problem? How do I fix this?
Hi, i have problem in solving the 34% installation error as Jon Blake. Do i need to uninstalled x264 and ffmpeg first and reinstall with adding –enable-shared and –enable-pic during configuration of both files?
Thanks in advanced.
Solved, i need to run “apt-get remove ffmpeg x264” and reinstall both ffmpeg and x264 by adding –enable-pic and –enable-shared during their configuration.
Thanks
That is a common problem. I should add it to the tutorial. I think those options are required for AMD processors. What processor are you using?
Thanks for this tutorial! It’s really nice!
But I’m still in step 4 because when I type this command:
. / configure –enable-static
the terminal gives me this error:
“Found no assembler
minimum version is yasm-1.0.0
if you really want to compile without asm, configure with –disable-asm.”
I tried to write it but nothing, I even tried to write every kind of combination had also read all the comments of others, but nothing changes. What should I do?
I’m using ubuntu in a virtualbox installed on an operating system windows7.
Thanks in advance!
Elena 🙂
Yasm should have been installed in step two. You can try installing yasm separately: sudo apt-get install yasm.
I’m sorry but there are some errors during installation:
Reading package lists…Done
Building dependency tree
Reading state information…Done
E: Unable to locate package yasm.
E: Couldn’t find any package by “yasm.”
But when I went past the point 2 was everything had gone well
Maybe your installation’s list of packages is incomplete or out of date. Start with this command: sudo apt-get update. After that, try to install yasm again. If that doesn’t work, check if you have the correct list of repositories.
This is what you should get:
<48> …/code $ sudo apt-get install yasm
[sudo] password for osman:
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following NEW packages will be installed:
yasm
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 604 kB of archives.
After this operation, 1,667 kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu/ oneiric/main yasm i386 1.1.0-1 [604 kB]
Fetched 604 kB in 2s (211 kB/s)
Selecting previously deselected package yasm.
(Reading database … 133561 files and directories currently installed.)
Unpacking yasm (from …/archives/yasm_1.1.0-1_i386.deb) …
Processing triggers for man-db …
Setting up yasm (1.1.0-1) …
<49> …/code $
Osman Eralp
thanks for the tutorial.
I would like to add few tips.
If you encounter the error
usr/bin/ld: /usr/local/lib/libavcodec.a(avpacket.o): relocation R_X86_64_32S against `av_destruct_packet_nofree’ can not be used when making a shared object; recompile with -fPIC”
it should be compiled with the flags –enable-pic –enable-shared –enable-static.
After setting up you can check whether configured correctly by ffmepg -V.
First of all, thank you for the fantastic guide – nothing else that I could find was was specific and well-put together.
I am trying to compile a simple program using openCV, specifically a few functions from highgui.
At the beginning of my program.cpp:</b< #include "highui.h"
output of pkg-config opencv –cflags: -I/usr/local/include/opencv -I/usr/local/include
output of pkg-config opencv –libs: -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
to compile: g++ `pkg-config opencv –cflags` `pkg-config opencv –libs` program.cpp -o program
g++ errors:
/tmp/ccpVcrve.o: In function `main’:
program.cpp:(.text+0x11): undefined reference to `cvCreateCameraCapture’
program.cpp:(.text+0x29): undefined reference to `cvNamedWindow’
program.cpp:(.text+0x45): undefined reference to `cvMoveWindow’
program.cpp:(.text+0x54): undefined reference to `cvQueryFrame’
program.cpp:(.text+0x6c): undefined reference to `cvShowImage’
program.cpp:(.text+0x78): undefined reference to `cvWaitKey’
I know that these are occurring because the necessary library is not being linked. However, I followed this guide to the letter on a completely fresh install of Ubuntu 11.10 (Running on a virtual machine using VMware Player). The include path is correct, as the compiler is able to find the “highgui.h”. The library path looks correct – /usr/local/lib contains libopencv_highui.so, libopencv_highui.so.2.3, libopencv_highui.so.2.3.1, and the rest of the similarly named opencv libs. Where am I going wrong?
Thanks,
Nick
I found a way to make it work – changing the order of the arguments to g++ causes it to compile happily:
g++ `pkg-config opencv –cflags` program.cpp -o program `pkg-config opencv –libs`
Nick, you are correct! In Ubuntu 11.10 you need to put the program name before the libs. In Ubuntu 11.04 you could put the libs before the program name. I’m sorry the tutorial did not have this change. I have updated the tutorial. Thanks!
Osman, thank you very much for the excellent tutorial. Been stumbling for days trying to get OpenCV installed in Ubuntu 11.04. But now I’m getting a problem when I compile that I can’t seem to fix: when I compile using your syntax, I get the following errors:
g++ ‘pkg-config opencv –cflags: No such file or directory
g++ ‘pkg-config opencv –libs: No such file or directory
hello.cpp:1:21: fatal error: highgui.h: No such file or directory
compilation terminated
I followed your installation instructions to the letter and had no errors or warnings. I get the following outputs:
$pkg-config opencv –libs
-L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
and
$pkg-config opencv –cflags
-I/usr/local/include/opencv -I/usr/local/include
I also added
export LD_LIBRARY_PATH=/usr/local/lib
and
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
to the end of my bashrc. I’m figuring it’s a problem with my pkg-config installation, but I don’t know where. Can you help?
Never mind – ten minutes after I left this comment, I found it: I was using regular single quotes(‘) instead of single back quotes(`) around my pkg-config calls. I didn’t realize there was a difference. Thanks again for the excellent tutorial!
Ya, watch out for those back quotes! Glad you figured it out.
Hey Osman,
What version of ffmpeg did we require , coz the one that you are using , I am getting the following error while running ./configure
leonidus@leonidus:~/ffmpeg-0.10.2$ ./configure –enable-gpl –enable-libfaac –enable-libmp3lame –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-libtheora –enable-libvorbis –enable-libx264 –enable-libxvid –enable-nonfree –enable-postproc –enable-version3 –enable-x11grab
ERROR: libx264 not found
If you think configure made a mistake, make sure you are using the latest
version from Git. If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file “config.log” produced by configure as this will help
solving the problem.
Please solve it dude, I need my opencv up and running
The error says that libx264 is not found. Make sure you installed x264 in step four of the procedure. Also, your command prompt shows that you are using ffmpeg 0.10.x, whereas my procedure used 0.8.x. That could a problem. Follow the procedure exactly, and you will be able to successfully install OpenCV.
Hi this a great Tutorial and the only one which work to me. by the Way the instalation did not install and built the samples in step 9 . I was wondering if you culd help me
to Compile opencv “with samples”
In the OpenCv_tutorial.PDF is mentioned that I should set BUILD_EXAMPLES to ON in cmake configuration . do you know what that means?
Thanks
Try this:
cmake -D BUILD_EXAMPLES=ON
I have to add the double dot–>>
“cmake -D BUILD_EXAMPLES=ON ..” Thanks
Great job – it helped me a lot. Many thx.
Hi,
As everyone else has already said, great tutorial, but I’m still having some trouble building OpenCV!
I have, so far, completed all 9 steps and downloaded OpenCV 3.2.1. When I try to build it I get the following errors…
Scanning dependencies of target opencv_highgui
[ 19%] Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap.o
[ 20%] Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_images.o
[ 20%] Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_ffmpeg.o
In file included from /home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg.cpp:45:0:
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘void CvCapture_FFMPEG::close()’:
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:451:9: warning: ‘void av_close_input_file(AVFormatContext*)’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:1525) [-Wdeprecated-declarations]
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:451:31: warning: ‘void av_close_input_file(AVFormatContext*)’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:1525) [-Wdeprecated-declarations]
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘bool CvCapture_FFMPEG::reopen()’:
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:483:5: warning: ‘void av_close_input_file(AVFormatContext*)’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:1525) [-Wdeprecated-declarations]
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:483:27: warning: ‘void av_close_input_file(AVFormatContext*)’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:1525) [-Wdeprecated-declarations]
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:486:52: error: ‘av_open_input_file’ was not declared in this scope
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:487:5: warning: ‘int av_find_stream_info(AVFormatContext*)’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:1349) [-Wdeprecated-declarations]
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:487:27: warning: ‘int av_find_stream_info(AVFormatContext*)’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:1349) [-Wdeprecated-declarations]
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:494:50: error: ‘avcodec_thread_init’ was not declared in this scope
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:497:5: warning: ‘int avcodec_open(AVCodecContext*, AVCodec*)’ is deprecated (declared at /usr/local/include/libavcodec/avcodec.h:3354) [-Wdeprecated-declarations]
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:497:28: warning: ‘int avcodec_open(AVCodecContext*, AVCodec*)’ is deprecated (declared at /usr/local/include/libavcodec/avcodec.h:3354) [-Wdeprecated-declarations]
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘bool CvCapture_FFMPEG::open(const char*)’:
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:524:63: error: ‘av_open_input_file’ was not declared in this scope
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:529:11: warning: ‘int av_find_stream_info(AVFormatContext*)’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:1349) [-Wdeprecated-declarations]
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:529:33: warning: ‘int av_find_stream_info(AVFormatContext*)’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:1349) [-Wdeprecated-declarations]
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:541:54: error: ‘avcodec_thread_init’ was not declared in this scope
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:550:13: warning: ‘int avcodec_open(AVCodecContext*, AVCodec*)’ is deprecated (declared at /usr/local/include/libavcodec/avcodec.h:3354) [-Wdeprecated-declarations]
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:550:36: warning: ‘int avcodec_open(AVCodecContext*, AVCodec*)’ is deprecated (declared at /usr/local/include/libavcodec/avcodec.h:3354) [-Wdeprecated-declarations]
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp: In function ‘AVStream* icv_add_video_stream_FFMPEG(AVFormatContext*, CodecID, int, int, int, double, int)’:
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:999:7: warning: ‘AVStream* av_new_stream(AVFormatContext*, int)’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:1549) [-Wdeprecated-declarations]
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:999:26: warning: ‘AVStream* av_new_stream(AVFormatContext*, int)’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:1549) [-Wdeprecated-declarations]
In file included from /home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg.cpp:45:0:
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp: In function ‘int icv_av_write_frame_FFMPEG(AVFormatContext*, AVStream*, uint8_t*, uint32_t, AVFrame*)’:
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1121:20: warning: ‘int avcodec_encode_video(AVCodecContext*, uint8_t*, int, const AVFrame*)’ is deprecated (declared at /usr/local/include/libavcodec/avcodec.h:4054) [-Wdeprecated-declarations]
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1121:72: warning: ‘int avcodec_encode_video(AVCodecContext*, uint8_t*, int, const AVFrame*)’ is deprecated (declared at /usr/local/include/libavcodec/avcodec.h:4054) [-Wdeprecated-declarations]
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘void CvVideoWriter_FFMPEG::close()’:
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1298:20: error: ‘url_fclose’ was not declared in this scope
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘bool CvVideoWriter_FFMPEG::open(const char*, int, double, int, int, bool)’:
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1411:35: error: ‘av_set_parameters’ was not declared in this scope
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1415:35: error: ‘dump_format’ was not declared in this scope
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1442:15: warning: ‘int avcodec_open(AVCodecContext*, AVCodec*)’ is deprecated (declared at /usr/local/include/libavcodec/avcodec.h:3354) [-Wdeprecated-declarations]
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1442:36: warning: ‘int avcodec_open(AVCodecContext*, AVCodec*)’ is deprecated (declared at /usr/local/include/libavcodec/avcodec.h:3354) [-Wdeprecated-declarations]
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1479:42: error: ‘URL_WRONLY’ was not declared in this scope
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1479:52: error: ‘url_fopen’ was not declared in this scope
/home/kanakia/OpenCV-2.3.1/modules/highgui/src/cap_ffmpeg_impl.hpp:1485:25: error: ‘av_write_header’ was not declared in this scope
make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_ffmpeg.o] Error 1
make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
make: *** [all] Error 2
I have looked through previous posts but can’t find anything to help me with this issue. I would appreciate any help anyone can provide. Thanks!
I have seen other similar errors referring to av* not declared. All the errors have been related to ffmpeg. Here are some things to try:
1. When dubugging strange errors like this one, always delete the opencv build directory and create a new one. I have seen files from a previous unsuccessful build interfere with the next build.
2. After building ffmpeg, make sure you actually installed it. If you didn’t install it, the opencv build might try to include another incompatible release of ffmpeg.
3. If 1 or 2 doesn’t help, try adding –enable-shared and –enable-pic to the ffmpeg and the x264 configure commands. Remake each of those tools, and then rebuild opencv.
Please report back how these steps work for you. Thanks!
Thank you SO much!!
I must have referred to more than a dozen websites trying to get OpenCV working. Your tut did it, although I did have trouble due to the –enable-shared and –enable-pic flags not being set initially.
Could you include them in the main tutorial itself so that we do not have to go through all of the comments for just a small, single error?
Thanks alot anyways for you help!
Thank you so much….
this is not a very comprehensive guide. It is very confusing. Please add all of the commands that users need to type between the ones you have. For example, I have no idea which folder to place the x264 codec into after I download it but before I build it, is it just any folder, does it matter? Same thing with ffmpeg. When I tried to compile those two it spit out a bunch of errors. Please use git or clone commands in your guide unless absolutely necessary so that everything can be copied and pasted in a row and without any additional commands. Not everybody knows linux that well and any mistakes made in the installation will affect them in the future as they use openCV. Thank you,
It should not matter where you place the files that you download. After you untar them, directories will be created. I did assume that people will know that they need to untar the files. I assumed that anyone with the knowledge to write and compile programs using OpenCV will have some basic Linux knowledge. However, I can see your point. In the step for compiling OpenCV, I specifically used the tar command. I will add it for x264 and ffmpeg. I can try to help with your errors. What errors did you get?
Hello! Can you please help me with this?
When i do the step 4 this is what happened.
papa@ubuntu:~/src/x264-snapshot-20050824-2219$ sudo make install
nasm -f elf -o common/i386/dct-a.o common/i386/dct-a.asm
make: nasm: Command not found
make: *** [common/i386/dct-a.o] Error 127
What to do?
The snapshot you downloaded is from 2005! Can you try downloading a snapshot from this decade? 😉
Hi Sir I have one Dought actually kernel have camera drivers again y u r installed separate drivers for cameras and what is neccessary of open cv in boards?with out cv u cant get the capture from the camera?i mean with out cv the camera is not working with any development board?
Is your camera a USB camera? If the USB camera supports the UVC standard, OpenCV should be able to grab frames from the camera. Does that answer your question?
hi ,,,i installed this stuffs properlly thrice but i still getting error called captured is null
When do you get the error? Can you cut and paste the output from the terminal so I can see the error in context?
thank u !!! now my code iss running with laptop cam but its not detecting usb camara (logitech),,,. when i install first time it was detecting but when i restart my lap its not working!!!! can u please help
Thanks a ton buddy:)
I have followed all steps, at step 10, I got this errors and I do not know why.
error: inconsistent operand constraints in an ‘asm’
By the way, openCV 2.4.2 was not valied, so I dowloaded version 2.4.10 manually
Some versions of gcc prior to 4.6.3 has problems with inline assembly code. Make sure you are using the latest version of gcc.
Hello Mr.Erlap
I’m at step nine and did a cmake.. in dir build.
At the GStreamer i get NO.
What do i do?
With regards!
Hello Mr.Erlap
Im on step 9 and after i do cmake ..
I get No on GStreamer, what do i do?
Best regards
Fredric