10分钟学会树莓派3B+图像边缘识别OpenCV3.3.1+QT5

做毕设接触的树莓派,查了很多资料,成功做出一个小项目,在本文总结自己的学习过程,从建立开发环境开始一步一步完成项目,希望帮助大家入门并体验到玩树莓派的乐趣。

准备

树莓派3B+、opencv(USB接口的方便插到树莓派板上)、qt creator

树莓派配置

树莓派Raspberry Pi,体积小、性能强的微型电脑主板,提供内存卡、电源、键盘、鼠标、音频、网线等接口,可用于开发图像识别、音频、办公Office等。本文用的树莓派3B+,建议参考书籍(百度网盘):

链接:https://pan.baidu.com/s/1EQJNxo9c9aZmh0EMqKh4DQ
提取码:p04z

树莓派3B+ 开箱安装系统配置教程

https://blog.csdn.net/fhqlongteng/article/details/80349652

QT+opencv配置

https://blog.csdn.net/sha1996118/article/details/75622692

编程

开启QT开发环境:树莓派开始 -> 编程 -> QT creator -> 文件 -> 新建文件或项目 -> 选择QT Console Application
在这里插入图片描述
然后文件命名
在这里插入图片描述
编程环境生成
在这里插入图片描述

本文用的opencv3.3.1,配置安装参照3.3.1版本,在QT5中打开.pro文件,在其后面添加

INCLUDEPATH += /usr/local/include \
		               /usr/local/include/opencv \
		               /usr/local/include/opencv2
LIBS += -L /usr/local/lib/ -lopencv_highgui -lopencv_core -lopencv_imgproc \
		                         -lopencv_video -lopencv_videoio -lopencv_imgcodecs  -lpthread

在main.ccp文件中编写

#include <QCoreApplication>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main ()
{
   Mat image_src, image_gray, image_binary, image_edge;
   Mat x_edge, y_edge, abs_x_edge, abs_y_edge;
   image_src = imread("/home/pi/image.jpg");//保存在pi里的image.jpg图片
   if (!image_src.data) {
       cout << "No image data\n";
        return -1;
   }
   cvtColor(image_src, image_gray, CV_RGB2GRAY); //灰度处理
   blur(image_gray, image_binary, Size(7, 7));     //滤波 
   threshold(image_binary, image_edge, 80, 255, CV_THRESH_BINARY);  //二值化 ,80阈值可自行改变
   
   //边缘检测  
   //Canny(image_edge, image_edge, 10, 30, 3);     //Canny算子
   
   //先对x方向,因为Sobel算子求出来的结果有正负,用16位有符号表示
   Sobel(image_edge,x_edge, CV_16S, 1, 0, 3, 1, 1, BORDER_DEFAULT);
   convertScaleAbs(x_edge, abs_x_edge);//将16位有符号转化为8位无符号
   /*再对y方向进行边缘检测**/
   Sobel(image_edge, y_edge, CV_16S, 0, 1, 3, 1, 1, BORDER_DEFAULT);
   convertScaleAbs(y_edge, abs_y_edgeImg);
   addWeighted(abs_x_edge, 0.5, abs_y_edge, 0.5, 0, edgeImg);
   
   //轮廓
   vector<vector<Point>> contours;
   vector<Vec4i> hierarchy;
   //查找轮廓
   findContours(image_edge,contours,hierarchy,CV_RETR_TREE,CV_CHAIN_APPROX_SIMPLE,Point(0,0));
   	//计算轮廓矩 	
	vector<Moments> mu(contours.size() ); 	
	for( int i = 0; i < contours.size(); i++ ) 	
	{ 
		mu[i] = moments( contours[i], false ); 
	} 	
   //计算轮廓的质心 	
	vector<Point2f> mc( contours.size() ); 	
	for( int i = 0; i < contours.size(); i++ ) 	
	{ 
		mc[i] = Point2d( mu[i].m10/mu[i].m00 , mu[i].m01/mu[i].m00 ); 
	}  	
	//画轮廓及其质心并显示 	
	Mat drawing = Mat::zeros( image_edge.size(), CV_8UC3 ); 		
	for( int i = 0; i< contours.size(); i++ ) 	
	{ 		
		Scalar color = Scalar( 255, 0, 0); 		
		drawContours( drawing, contours, i, color, 2, 8, hierarchy, 0, Point() ); 		
		circle( drawing, mc[i], 5, Scalar( 0, 0, 255), -1, 8, 0 );		 		
		rectangle(drawing, boundingRect(contours.at(i)), cvScalar(0,255,0)); 			
		char tam[100]; 
		sprintf(tam, "(%0.0f,%0.0f)",mc[i].x,mc[i].y); 
		putText(drawing, tam, Point(mc[i].x, mc[i].y), FONT_HERSHEY_SIMPLEX, 0.4, cvScalar(255,0,255),1); 	
	}	
	namedWindow( "Contours", CV_WINDOW_AUTOSIZE ); 	
	imshow( "Contours", drawing ); 	
   imshow("image", image_src);
   imshow("edge", image_edge);

    waitKey(0);
    return 0;
}

原图image.jpg,点击绿色符号运行

在这里插入图片描述
得到效果图:
在这里插入图片描述
在这里插入图片描述
电脑PC上用到传输文件软件FileZilla
在这里插入图片描述
树莓派指令ifconfig,获取IP地址,要保证电脑和树莓派连上同一网络。

在这里插入图片描述

参考文章:利用OpenCV求取图像多轮廓质心,并在输出图像上显示质心坐标
链接 https://blog.csdn.net/zhuoyueljl/article/details/53588271

  • 0
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 树莓3b 是一种小型计算机,可以应用于各种嵌入式系统中。结合opencv图像处理库,可以实现人脸识别门禁系统。 在系统中,树莓3b作为主控制器,通过摄像头采集图片,并使用opencv进行图像处理和人脸识别。当有人靠近门口时,树莓可以识别出其面部信息,并与已存储的人脸数据库进行对比,从而确定是否有权限进入。 为了保证系统的安全性,可以通过添加语音控制和身份验证等功能来进一步加强系统的安全性。同时可以加入实时监控功能,将采集的画面实时传输至管理人员,及时反馈人员进出信息。 总体来说,基于树莓3b和opencv的人脸识别门禁系统有着较高的安全性、高效的运行速度以及良好的稳定性等优点,可以应用于学校、公司等地的门禁系统中。 ### 回答2: 随着人们对门禁安全性的日益重视,基于树莓3b和OpenCV的人脸识别门禁系统得到越来越广泛的应用。 首先,使用树莓3b可以实现低成本的门禁控制系统。树莓作为一种单片机,它既可以作为一个微型计算机来完成门禁控制系统的主体功能,又可以根据不同系统的需求接入不同的外设,如门禁读卡器、门铃、LED灯等。 其次,OpenCV是一款强大的开源计算机视觉库,它支持多种计算机视觉算法,包括人脸检测和识别。人脸识别门禁系统主要通过将门禁区域内的摄像头与OpenCV进行连接,实现对人脸的实时监测和识别,从而控制门禁的开启与关闭。OpenCV的高精度识别,可以大大提高门禁性能。 最后,人脸识别门禁系统可以应用于多种场所,如工厂、学校、小区等,实现了高效门禁控制、流畅通行、安全管理等功能。同时,基于树莓3B和OpenCV的门禁系统不仅成本低、性能高,而且通过不断地更新软件算法,也可以不断地提升门禁系统的安全性级别,拓展门禁系统的应用领域。 ### 回答3: 基于树莓3b和opencv的人脸识别门禁系统是一种非常先进的智能门禁系统。该系统可以根据注册的人脸信息进行快速准确的身份识别,并控制门禁的进出。该系统的核心技术是使用opencv对摄像头捕捉到的图像进行处理和分析,找出其中的人脸特征,并与已有的人脸模板进行匹配。 在使用该门禁系统时,用户首先需要将自己的人脸信息进行注册,包括姓名、照片等。当用户来到门禁处时,门禁系统会自动对其进行人脸识别,并与注册时的信息进行匹配,如果匹配成功,系统会自动开启门禁,否则门禁将无法开启。该系统不仅可以提高门禁的安全性和便利程度,还可以减少传统门禁系统的管理和维护成本。 该门禁系统的优势在于其高精度、高速度、高稳定性、低成本、易操作等特点,可以应用于企业、学校、公共场所等各种场合。同时,该系统还具有很好的扩展性和可定制性,可以根据用户的需求进行定制和升级。但是,该系统也存在一些缺点,如依赖网络环境、对光线的要求较高等,需要用户在使用时注意避免这些问题的影响。 总之,基于树莓3b和opencv的人脸识别门禁系统是一种非常实用和先进的门禁系统,可以为用户提供更加便捷、安全、高效的出入系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值