(初学树莓派香蕉派心得)利用opencv简单控制摄像头,做一些基本图像处理

  OpenCV简介:opencv是一个开源的计算机视觉库,是英特尔公司资助的两大图像处理利器之一。它为图像处理、模式识别、三维重建、物体跟踪、机器学习和线性代数提供了各种各样的算法。(扩展阅读)
  其实安装与使用OpenCV库非常简单,平常做图像处理算法处理的时候大家经常习惯用MATLAB,虽然MATLAB具有强大的工具箱,但是无法达到实时的效果,这一点小编一点也不喜欢,在这篇文章中,我将使用Banana Pi M2U与树莓派来演示安装OpenCV库与运行使用OpenCV库编写的程序。小编的这两块板子均移植的是Linux操作系统。(什么?没学过linux? …… 哎,那也不用慌张,这里只用到了一些基本的Linux指令,大家在有看不懂指令的时候可百度一下)。首先我们来看下环境配置,(等一下,小编,我也没学过ARM,没有硬件基础)其实在这里大家完全不用操心,我们根本没用到硬件知识,此时的香蕉派与树莓派只是相当于一个小电脑。
(1)树莓派或者香蕉派(已经移植完linux操作系统,关于如何在电脑上linux系统移植及配置opencv ,小编会在后续的帖子中提到)
(2)USB摄像头一个
准备好硬件资源以后,我们即刻开始(注意,我这里是移植的是2.4.9版本,不同版本略有区别)
下载与安装:
在安装OpenCV库之前,我们需要更新一下软件源:
1、 sudo apt-get update
然后开始安装OpenCV库:
2、sudo apt-get install libcv-dev

做到这一步的时候我们可以暂时去喝口水,耐心的等待一会儿,等到安装完成。我们就可以开始来写第一个程序了。
其实使用OpenCV库,会使代码更容易阅读,更加整洁,根本不再需要重复造轮子!小编个人极其喜欢偷懒,经过简化之后,大概十余行即可打开摄像头。

#include 
#include 
using namespace cv;
int main()
{
VideoCapture cap(0);           //打开摄像头
// 如果要打开本地视频采用  VideoCapture cap("***.avi");
if(!cap.isOpened())  return -1;     //检测一下摄像头是否打开
Mat frame;  
while(1){
cap>>frame;        //读取当前帧
// 此处可添加图像处理算法,对图像进行处理,当然了,我们可以不做任何操作,只打开一下摄像头
imshow("Xiaorun OpenCV CAM", frame);    //显示一下
if(waitKey(20) >=0) break;       // 等待按键,跳出循环
}
return 0;
}  

  就这样我们就编写完了一个打开摄像头的程序,将以上代码保存为xiaorun.cpp,并在shell敲一下它g++ -o xiaorun ./xiaorun.cpp -lopencv_core -lopencv_highgui
  编译完之后不出意外的话应该没有错误,我们会在当前目录下看到一个可执行文件,xiaorun,我们运行一下 ./ xiaorun
dang dang dang 这时候屏幕就可以看到摄像头里的图像了,小编颜值不高,在这里就不挂出自拍了。

  上面的例子已经成功将摄像头的图像显示在屏幕上,不过这还不够炫酷~,完全不能让小编玩high.接下来我想在上述的空白处添加三行代码,以实现可实现实时的边缘检测

#include 
#include 
#include 
using namespace cv;
int main()
{
VideoCapture cap(0);//打开摄像头
if(!cap.isOpened())return -1;
Mat frame,edges;
while(1){
cap>>frame;//读取当前帧


cvtColor(frame,edges,CV_BGR2GRAY);//把图像转换为灰度图像blur(edges,edges,Size(7,7));//模糊降噪
Canny(edges,edges,3,9,3);//Canny 边缘检测


imshow("Xiaorun OpenCV Canny", edges);
if(waitKey(20) >=0) break;
}
return 0;
}        

同样 ,我们保存为xiaoruncanny.cpp ,编译一下 g++ -o xiaoruncanny ./xiaorun.cpp -lopencv_core -lopencv_highgui -lopencv_imgproc
当然木有错误了,只是稍稍加一个头文件和三行代码,OK,运行一下吧 ./ xiaoruncanny

  机器视觉是人工智能正在快速发展的一个分支。简单说来,机器视觉就是用机器代替人眼来做测量和判断。OpenCV的更多例子大家可以在网上找到~OpenCV可以应用在各种场合,例如跟踪小车,人脸识别等,小编在此仅抛砖引玉,此处只有一个基本框架,大家可以参考,自行编写算法,玩的更High~

你可能感兴趣的:(图像处理)