carlpc

【Galileo】图像处理平台opencv

0
阅读(3584)

       从galileo官方给出的系统yocto中可以进入到 /usr/lib和/usr/include 这两个目录中可以看到有存在opencv的库和头文件,因此解决了库的支持。

      其次重要的是ubuntu中编译的支持,在安装了交叉编译工具的条件下,再安装opencv的安装,这样就能实现在电脑端的编译,板子上运行。

       如果觉得安装很麻烦的话,楼主有试过把这两个库文件和头文件拷出来放进ubuntu的目录下,结果发现ubuntu也开不了机了,不过这应该可以再去试试,时间关系没有再去多弄。

       第三种方式的方式出于偶然,直接舍弃ubuntu,板子的yocto系统本身就有g++,因此直接在板子上编译解决了以上一些繁琐的事情,另外由于使用了板子,就可以全不使用ubuntu,因为文件的传输可以使用secureCRT更加方便。

       至此解决了编译平台的问题。

       接下来是如何调用opencv了,c++文件的编写和windows平台的编写时一样的,这里不在累述,以摄像头采集并存储图片为例。

#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include "opencv2/opencv.hpp"
#include "opencv2/core/core.hpp"
#include "opencv2/video/background_segm.hpp"
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/legacy/legacy.hpp"
#include "opencv2/video/tracking.hpp"
#include "opencv2/photo/photo.hpp"

using namespace std;

int main()
{
	IplImage *frame = NULL;
	int num = 0;
	int key;
	CvCapture *input_camera = cvCaptureFromCAM(-1);
	frame = cvQueryFrame(input_camera);
	while(frame != NULL)
	{
		num++;
		frame = cvQueryFrame(input_camera);

		if(num >=10)
		{
			system("rm ./test.jpg");			
			cvSaveImage("test.jpg",frame);
		}
	}
	cvReleaseCapture(&input_camera);
	return 0;
}

编译命令:

g++ main.cpp -o came -lopencv_stitching -lopencv_ts -lopencv_videostab -lopencv_core -lopencv_contrib -lopencv_features2d -lopencv_gpu -lopencv_ml -lopencv_nonfree -lopencv_flann -lopencv_calib3d -lopencv_video -lopencv_photo -lopencv_highgui -lopencv_imgproc -lopencv_legacy

编译后直接可以运行就能采集到图片了。


经验证,板子编译速度回比较慢,因此最好是在电脑上安装OPENCV通过电脑编译来提高速度