linux下qt配置的opencv出现libopencv_calib3d.so: file not recognized: File format not recognized
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下qt配置的opencv出现libopencv_calib3d.so: file not recognized: File format not recognized相关的知识,希望对你有一定的参考价值。
linux下qt配置的opencv出现/usr/local/lib/libopencv_calib3d.so: file not recognized: File format not recognized等库文件连接不上,按照网上教程安装,结果出现这种情况
qmake配置如下
qt的.pro文件如下
QT += coreTARGET = opencvCONFIG += consoleCONFIG -= app_bundleCONFIG += link_pkgconfigPKGCONFIG += opencv
TEMPLATE = app
SOURCES += main.cpp
源文件如下
#include <cv.h>#include <highgui.h>
int main()IplImage *img = 0;img = cvLoadImage("qiaoba.jpg",-1);cvNamedWindow("qiaoba", 1);cvShowImage("lena", img);cvWaitKey(0);return 0;
求大神解救,已经弄了好久,网上找答案都不行!
库本身应该没问题的,都是64位的,libopencv_calib3d.so连接到libopencv_calib3d.so.2.4.8是共享库也没错,而且
opencv独自编译能通过,make也能显示图片,在qt就不行,觉得应该是qt识别的问题?
OpenCV在Ubuntu和Linux系统下的移植
1安装cmake-qt-gui:sodo apt-get install cmake-qt-gui
2. 配置cmake:
进入存放opencv2.4.10的文件夹,输入cmake-gui。进入如下界面,点击configure,选择最后一个,下一步
Finish之后勾选 如下两个:
去掉如下两个:
再次点击configure,然后generate
进入/arm-opencv/ 文件夹运行以下命令
make
成功之后运行
make install
3.配置opencv环境:
打开安装目录../arm-opencv/CmakeCache.txt。修改如下
把arm-opencv/lib下所有文件复制到usr/local/lib下,arm-opencv/include下所有文件拷贝到usr/local/include下。如果没有权限,执行sudochown –R niostar /usr/local
注意/usr/local/lib/pkgconfig文件夹。在里面新建一个文件arm-opencv.pc
内容与arm-opencv/unix-install/opencv.pc一致。但注意复制后改为arm-opencv.pc这个名字
4.更改变量
将文件/etc/ld.so.conf中添加一行代码/usr/local/lib
sudo gedit /etc/bash.bashrc 最后一行添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
5.编译。
测试程序如文件夹中test.cpp
编译命令如下
arm-linux-g++ `pkg-config --cflags arm-opencv` `pkg-config--libs arm-opencv` test2.cpp -lpthread -lrt -ldl
6.ARM板测试运行
将arm-opencv/整个文件夹拷贝到arm板的文件系统下,但是要求在ARM板下的路径与虚拟机路径一致。
运行测试程序,可以成功
#include <cv.h> #include <cxcore.h> #include <highgui.h> int main(int argc,char **argv) { CvCapture* capture = NULL; IplImage* pImg = NULL; IplImage* pImg1 = NULL; fprintf(stderr, "123"); pImg = cvLoadImage("lena.jpg",1); fprintf(stderr, "456"); pImg1 = cvCreateImage(cvSize(pImg->width,pImg->height),IPL_DEPTH_8U,1); fprintf(stderr, "456"); cvCvtColor(pImg,pImg1,CV_RGB2GRAY); fprintf(stderr, "789"); cvSaveImage("1_1.jpg",pImg1); fprintf(stderr, "109"); cvReleaseImage( &pImg ); cvReleaseImage( &pImg1 ); return 0; }
以上是关于linux下qt配置的opencv出现libopencv_calib3d.so: file not recognized: File format not recognized的主要内容,如果未能解决你的问题,请参考以下文章