#include <opencv/cv.h> #include <opencv/highgui.h> using namespace cv; int main(int,char**) { VideoCapture cap(0); // open the default camera if (!cap.isOpened()) // check if we succeeded return -1; Mat edges; namedWindow("edges",1); for (;;) { Mat frame; cap >> frame; // get a new frame from camera cvtColor(frame,edges,CV_BGR2GRAY); GaussianBlur(edges,Size(7,7),1.5,1.5); Canny(edges,30,3); imshow("edges",edges); if (waitKey(30) >= 0) break; } return 0; }
编译这种静态链接方式:
arm-linux-gnueabi-g -mcpu = cortex-a9 -mfpu = neon -static opencv_camshow.cpp -o exe -I / home / om / OpenCV-2.4.4 / platforms / linux / build_soft / install / include -L / home / om / OpenCV-2.4.4 / platform / linux / build_soft / install / lib -L / home / om / OpenCV-2.4.4 / platforms / linux / build_soft / 3rdparty / lib -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_imgproc – lopencv_core -lopencv_contrib -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_flann -lopencv_photo -lopencv_videostab -pthread -lm -lrt -lzlib静态
这是问题.当我尝试在目标上运行可执行文件“exe”时,我得到这个运行时错误:
HIGHGUI错误:V4L / V4L2:VIdioC_S_CROP
OpenCV错误:未指定的错误(该函数未实现)使用Windows,GTK 2.x或Carbon支持重建库,如果您在Ubuntu或Debian上,请安装libgtk2.0-dev和pkg-config,然后重新运行cmake或配置脚本)在cvNamedWindow中,文件/home/om/OpenCV-2.4.4/modules/highgui/src/window.cpp,第652行
终止调用后抛出一个“cv :: Exception”的实例
what():/home/om/OpenCV-2.4.4/modules/highgui/src/window.cpp:652:error:(-2)该函数未实现.用Windows,GTK 2.x或Carbon支持重建库.如果您在Ubuntu或Debian上,然后在函数cvNamedWindow中重新运行cmake或configure脚本
我重新安装了libgtk2.0-dev,pkg-config exists&重新编译了OpenCV,但这没有帮助.如果有人知道如何克服这个问题,请让我知道.提前致谢. 〜嗡
更多信息:
我弄清楚是什么导致这个问题,但还没有修复它?
从我的理解中,问题在于opencv的cmake脚本.它不承认GTK的存在,因此没有gtk支持的交叉编译.这确保在工具链的lib文件夹中存在基于arm的gtk库,并将其路径导出到系统路径.
如果没有,请从突触包管理器中安装v4l2ucp,v4l-utils和libv4l-dev.然后再重新制作.
这对我有用,但是我在Ubuntu 12.04上使用OpenCV与python绑定.