Opencv安装可以从官网上直接下载安装,也可以通过下面的方式安装:
1、进入系统后打开命令行,使用wget下载OpenCV源码:
url:https://github.com/Itseez/opencv/archive/3.2.0.zip
sudo apt-get install wget
sudo wget https://github.com/Itseez/opencv/archive/3.2.0.zip
下载完之后,在/home/(系统帐号名)目录下可以看到已下载的文件(我的是/home/yhan)
2、解压ZIP源码文件
sudo apt-get install unzip
sudo unzip 3.2.0.zip
3、进入源码目录,创建release目录
cd opencv-3.2.0
mkdir release
4、安装依赖库
sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev
5、进入release目录
安装OpenCV时,所有的文件都会被放到这个release目录下
cd release
6、cmake编译OpenCV源码,安装所有的lib文件都会被安装到/usr/local/opencv3.2.0目录下
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.2.0 ..
7、安装
sudo make install -j4
1、创建pkgconfig目录
mkdir /usr/local/pkgconfig
2、拷贝opencv.pc文件到pkgconfig目录
cp /usr/local/opencv3.2.0/lib/pkgconfig/opencv.pc /usr/local/pkgconfig/opencv3.2.pc
3.以管理员权限用vim打开bash
sudo vim ~/.bashrc
4.在文件最后一行添加环境变量
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/pkgconfig
export PKG_CONFIG_PATH
5、wq保存文件后,source文件(执行脚本)
source ~/.bashrc
6.测试pkgconfig
pkg-config --libs opencv3.2
以上摘自Ubuntu14.04安装OpenCV2.4.13(ZIP安装)
在后续测试中,出现error while loading shared libraries: libopencv_core.so.X: cannot open shared object file: No such file
的错误,这是因为链接器ld提示找不到库文件。ld默认的目录是/lib和/usr/lib,如果放在其他路径也可以,需要让ld知道库文件所在的路径。若不知道该文件所在的路径,可以执行
sudo find / -name "libopencv_core.so.3.2*"
解决方法:在/etc/ld.so.conf.d中配置.conf
cd /etc/ld.so.conf.d/
touch opencv.conf
vim opencv.conf
加入/usr/local/opencv3.2.0/lib
即可。
最后执行
sudo ldconfig -v
引用ubuntu opencv Error: cannot open shared object file: no such file or directory与OpenCV runtime error: "libopencv_core.so.3.2: cannot open shared object file: No such file or direct
参考本人博文:Ubuntu环境下配置巴斯勒相机及相机测试
同上
cd /etc/ld.so.conf.d/
touch pylon.conf
vim pylon.conf
加入/opt/pylon5/lib64
后执行sudo ldconfig -v
代码摘自Linux系统调试basler Gige接口工业相机并用C++、OpenCV开发
/*
* Grab.cpp
*
* Created on: 2018年11月30日
* Author: wenhan
*/
#define saveImages 1
// Include files to use the PYLON API.
#include
#ifdef PYLON_WIN_BUILD
# include
#endif
#include
#include
#include
// Namespace for using pylon objects.
using namespace Pylon;
// Namespace for using cout.
using namespace std;
using namespace cv;
// Number of images to be grabbed.
static const uint32_t c_countOfImagesToGrab = 100;
//
int main(int argc, char* argv[])
{
Mat src;
CImageFormatConverter formatConverter;
formatConverter.OutputPixelFormat = PixelType_BGR8packed;
int grabbedlmages = 0;
// 创建一个Pylonlmage后续将用来创建OpenCV images
CPylonImage pylonImage;
// The exit code of the sample application.
int exitCode = 0;
// Before using any pylon methods, the pylon runtime must be initialized.
PylonInitialize();
try
{
// Create an instant camera object with the camera device found first.
CInstantCamera camera( CTlFactory::GetInstance().CreateFirstDevice());
// Print the model name of the camera.
cout << "Using device " << camera.GetDeviceInfo().GetModelName() << endl;
// The parameter MaxNumBuffer can be used to control the count of buffers
// allocated for grabbing. The default value of this parameter is 10.
camera.MaxNumBuffer = 5;
// Start the grabbing of c_countOfImagesToGrab images.
// The camera device is parameterized with a default configuration which
// sets up free-running continuous acquisition.
camera.StartGrabbing( c_countOfImagesToGrab);
// This smart pointer will receive the grab result data.
CGrabResultPtr ptrGrabResult;
// Camera.StopGrabbing() is called automatically by the RetrieveResult() method
// when c_countOfImagesToGrab images have been retrieved.
while ( camera.IsGrabbing())
{
// Wait for an image and then retrieve it. A timeout of 5000 ms is used.
camera.RetrieveResult( 5000, ptrGrabResult, TimeoutHandling_ThrowException);
// Image grabbed successfully?
if (ptrGrabResult->GrabSucceeded())
{
// Access the image data.
cout << "SizeX: " << ptrGrabResult->GetWidth() << endl;
cout << "SizeY: " << ptrGrabResult->GetHeight() << endl;
formatConverter.Convert(pylonImage, ptrGrabResult);
src = cv::Mat(ptrGrabResult->GetHeight(), ptrGrabResult->GetWidth(), CV_8UC3, (uint8_t *) pylonImage.GetBuffer());
//如果需要保存图片
if (saveImages)
{
std::ostringstream s;
// 按索引定义文件名存储图片
s << "/home/wenhan/img/image_" << grabbedlmages << ".jpg";
std::string imageName(s.str());
//保存OpenCV image.
imwrite(imageName, src);
grabbedlmages++;
}
//新建OpenCV display window.
namedWindow("OpenCV Display Window", CV_WINDOW_NORMAL); // other options: CV_AUTOSIZE, CV_FREERATIO
//显示及时影像.
imshow("OpenCV Display Window", src);
waitKey(1);
const uint8_t *pImageBuffer = (uint8_t *) ptrGrabResult->GetBuffer();
cout << "Gray value of first pixel: " << (uint32_t) pImageBuffer[0] << endl << endl;
#ifdef PYLON_WIN_BUILD
// Display the grabbed image.
Pylon::DisplayImage(1, ptrGrabResult);
#endif
}
else
{
cout << "Error: " << ptrGrabResult->GetErrorCode() << " " << ptrGrabResult->GetErrorDescription() << endl;
}
}
}
catch (const GenericException &e)
{
// Error handling.
cerr << "An exception occurred." << endl
<< e.GetDescription() << endl;
exitCode = 1;
}
// Comment the following two lines to disable waiting on exit.
cerr << endl << "Press Enter to exit." << endl;
while( cin.get() != '\n');
// Releases all pylon resources.
PylonTerminate();
return exitCode;
}
qt creator新建项目,将上面代码加入至main.c中,并在.pro文件中添加如下
INCLUDEPATH += /usr/local/opencv3.2.0/include \
/usr/local/opencv3.2.0/include/opencv \
/usr/local/opencv3.2.0/include/opencv2 \
/opt/pylon5/include \
/opt/pylon5/include/pylon
LIBS += /usr/local/opencv3.2.0/lib/libopencv_calib3d.so \
/usr/local/opencv3.2.0/lib/libopencv_calib3d.so.3.2.0 \
/usr/local/opencv3.2.0/lib/libopencv_calib3d.so.3.2.0 \
/usr/local/opencv3.2.0/lib/libopencv_core.so \
/usr/local/opencv3.2.0/lib/libopencv_core.so.3.2 \
/usr/local/opencv3.2.0/lib/libopencv_core.so.3.2.0 \
/usr/local/opencv3.2.0/lib/libopencv_features2d.so \
/usr/local/opencv3.2.0/lib/libopencv_features2d.so.3.2 \
/usr/local/opencv3.2.0/lib/libopencv_features2d.so.3.2.0 \
/usr/local/opencv3.2.0/lib/libopencv_flann.so \
/usr/local/opencv3.2.0/lib/libopencv_flann.so.3.2 \
/usr/local/opencv3.2.0/lib/libopencv_flann.so.3.2.0 \
/usr/local/opencv3.2.0/lib/libopencv_highgui.so \
/usr/local/opencv3.2.0/lib/libopencv_highgui.so.3.2 \
/usr/local/opencv3.2.0/lib/libopencv_highgui.so.3.2.0 \
/usr/local/opencv3.2.0/lib/libopencv_imgcodecs.so \
/usr/local/opencv3.2.0/lib/libopencv_imgcodecs.so.3.2 \
/usr/local/opencv3.2.0/lib/libopencv_imgcodecs.so.3.2.0 \
/usr/local/opencv3.2.0/lib/libopencv_imgproc.so \
/usr/local/opencv3.2.0/lib/libopencv_imgproc.so.3.2 \
/usr/local/opencv3.2.0/lib/libopencv_imgproc.so.3.2.0 \
/usr/local/opencv3.2.0/lib/libopencv_ml.so \
/usr/local/opencv3.2.0/lib/libopencv_ml.so.3.2 \
/usr/local/opencv3.2.0/lib/libopencv_ml.so.3.2.0 \
/usr/local/opencv3.2.0/lib/libopencv_objdetect.so \
/usr/local/opencv3.2.0/lib/libopencv_objdetect.so.3.2 \
/usr/local/opencv3.2.0/lib/libopencv_objdetect.so.3.2.0 \
/usr/local/opencv3.2.0/lib/libopencv_photo.so \
/usr/local/opencv3.2.0/lib/libopencv_photo.so.3.2 \
/usr/local/opencv3.2.0/lib/libopencv_photo.so.3.2.0 \
/usr/local/opencv3.2.0/lib/libopencv_shape.so \
/usr/local/opencv3.2.0/lib/libopencv_shape.so.3.2 \
/usr/local/opencv3.2.0/lib/libopencv_shape.so.3.2.0 \
/usr/local/opencv3.2.0/lib/libopencv_stitching.so \
/usr/local/opencv3.2.0/lib/libopencv_stitching.so.3.2 \
/usr/local/opencv3.2.0/lib/libopencv_stitching.so.3.2.0 \
/usr/local/opencv3.2.0/lib/libopencv_superres.so \
/usr/local/opencv3.2.0/lib/libopencv_superres.so.3.2 \
/usr/local/opencv3.2.0/lib/libopencv_superres.so.3.2.0 \
/usr/local/opencv3.2.0/lib/libopencv_video.so \
/usr/local/opencv3.2.0/lib/libopencv_video.so.3.2 \
/usr/local/opencv3.2.0/lib/libopencv_video.so.3.2.0 \
/usr/local/opencv3.2.0/lib/libopencv_videoio.so \
/usr/local/opencv3.2.0/lib/libopencv_videoio.so.3.2 \
/usr/local/opencv3.2.0/lib/libopencv_videoio.so.3.2.0 \
/usr/local/opencv3.2.0/lib/libopencv_videostab.so \
/usr/local/opencv3.2.0/lib/libopencv_videostab.so.3.2 \
/usr/local/opencv3.2.0/lib/libopencv_videostab.so.3.2.0 \
/opt/pylon5/lib64/libbxapi-5.2.0.so \
/opt/pylon5/lib64/libbxapi.so \
/opt/pylon5/lib64/libFirmwareUpdate_gcc_v3_1_Basler_pylon_v5_1.so \
/opt/pylon5/lib64/libGCBase_gcc_v3_1_Basler_pylon_v5_1.so \
/opt/pylon5/lib64/libGCBase_gcc_v3_1_Basler_pylon.so \
/opt/pylon5/lib64/libGenApi_gcc_v3_1_Basler_pylon_v5_1.so \
/opt/pylon5/lib64/libGenApi_gcc_v3_1_Basler_pylon.so \
/opt/pylon5/lib64/libgxapi-5.2.0.so \
/opt/pylon5/lib64/libgxapi.so \
/opt/pylon5/lib64/liblog4cpp_gcc_v3_1_Basler_pylon_v5_1.so \
/opt/pylon5/lib64/libLog_gcc_v3_1_Basler_pylon_v5_1.so \
/opt/pylon5/lib64/libLog_gcc_v3_1_Basler_pylon.so \
/opt/pylon5/lib64/libMathParser_gcc_v3_1_Basler_pylon_v5_1.so \
/opt/pylon5/lib64/libMathParser_gcc_v3_1_Basler_pylon.so \
/opt/pylon5/lib64/libNodeMapData_gcc_v3_1_Basler_pylon_v5_1.so \
/opt/pylon5/lib64/libNodeMapData_gcc_v3_1_Basler_pylon.so \
/opt/pylon5/lib64/libpylonbase-5.2.0.so \
/opt/pylon5/lib64/libpylonbase.so \
/opt/pylon5/lib64/libpylonc-5.2.0.so \
/opt/pylon5/lib64/libpylonc.so \
/opt/pylon5/lib64/libpylon_TL_bcon-5.2.0.so \
/opt/pylon5/lib64/libpylon_TL_bcon.so \
/opt/pylon5/lib64/libpylon_TL_camemu-5.2.0.so \
/opt/pylon5/lib64/libpylon_TL_camemu.so \
/opt/pylon5/lib64/libpylon_TL_gige-5.2.0.so \
/opt/pylon5/lib64/libpylon_TL_gige.so \
/opt/pylon5/lib64/libpylon_TL_usb-5.2.0.so \
/opt/pylon5/lib64/libpylon_TL_usb.so \
/opt/pylon5/lib64/libpylonutility-5.2.0.so \
/opt/pylon5/lib64/libpylonutility.so \
/opt/pylon5/lib64/libuxapi-5.2.0.so \
/opt/pylon5/lib64/libuxapi.so \
/opt/pylon5/lib64/libXmlParser_gcc_v3_1_Basler_pylon_v5_1.so \
/opt/pylon5/lib64/libXmlParser_gcc_v3_1_Basler_pylon.so \
INCLUDEPATH
为第三方库的路径,LIBS
为动态连接库路径。