#include "lamps_detection.h"
#include <vector>
using namespace std;
CLampsDetection::CLampsDetection()
{
m_nStructElementSize = 2;
}
void CLampsDetection::LampsDetectProcess(cv::Mat& img,long long time_stamp,std::vector<Object>& detections_list)
{
if(img.empty())
{
return;
}
/*cv::cvtColor(img,m_image_gray,CV_BGR2GRAY);
//cv::resize(m_image_gray,m_image_gray,cv::Size(m_imgW,m_imgH));
cv::threshold(m_image_gray,m_image_gray , 150, 255, cv::THRESH_BINARY);
cv::Mat element = getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(2 * m_nStructElementSize + 1, 2 * m_nStructElementSize + 1), cv::Point(m_nStructElementSize, m_nStructElementSize));
cv::erode(m_image_gray, m_image_gray, element);
cv::dilate(m_image_gray, m_image_gray, element); */
cv::SimpleBlobDetector::Params pDefaultBLOB;
//二值化
pDefaultBLOB.minThreshold = 150; //二值化的起始阈值 40
pDefaultBLOB.maxThreshold = 255;
pDefaultBLOB.thresholdStep = 2;
pDefaultBLOB.minRepeatability = 1;
pDefaultBLOB.minDistBetweenBlobs = 10;
//斑点颜色
pDefaultBLOB.filterByColor = true;
pDefaultBLOB.blobColor = 255;
//面积控制
pDefaultBLOB.filterByArea = true;
pDefaultBLOB.minArea = 1000;
pDefaultBLOB.maxArea = 3000000;
//形状圆
pDefaultBLOB.filterByCircularity = true;
pDefaultBLOB.minCircularity = 0.3f;
pDefaultBLOB.maxCircularity = std::numeric_limits<float>::max();
//凹
pDefaultBLOB.filterByConvexity = true;
pDefaultBLOB.minConvexity = 0.8; //0.05f//斑点的最小凹度
pDefaultBLOB.maxConvexity = std::numeric_limits<float>::max(); //斑点的最大凸度
//惯性比
pDefaultBLOB.filterByInertia = true;
pDefaultBLOB.minInertiaRatio = 0.3f; //斑点的最小惯性率 圆的值为1,直线的值为0 //.05f
pDefaultBLOB.maxInertiaRatio = 1; //斑点的最大惯性率
//凸
pDefaultBLOB.filterByConvexity = true;
pDefaultBLOB.minConvexity = 0.3f;
pDefaultBLOB.maxConvexity = std::numeric_limits<float>::max();
//*用参数创建对象
cv::Ptr<cv::SimpleBlobDetector> blob=cv::SimpleBlobDetector::create(pDefaultBLOB);
vector<cv::KeyPoint> key_points;
blob->detect(img,key_points);
cv::Mat outImg;
static int i=0;
if(key_points.size()>0)
{
for(int i=0;i<key_points.size();i++)
{
cout << "Blob_size 直径:" << key_points[i].size << endl;
cout << "Blob_response 点强度:" << key_points[i].response << endl;
cout << "Blob_pt 点位置:" << key_points[i].pt << endl;
cout << "keypoints _angle" << key_points[i].angle << endl;
cout << "keypoints_octave" << key_points[i].octave << endl;
}
cout<<"size ="<<key_points.size()<<endl;
outImg =img.clone();
//绘制结果
cv::drawKeypoints(img,key_points,outImg,cv::Scalar(0,0,255),cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
char str[50];
sprintf(str,"%d.jpg",i);
i++;
imwrite(str,outImg);
cout<<str<<endl;
//sprintf(str,"---%d.jpg",i);
//imwrite(str,m_image_gray);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 基于OpenCV-python的夜间灯光识别源码+使用文档+全部资料(优秀项目).zip基于OpenCV-python的夜间灯光识别源码+使用文档+全部资料(优秀项目).zip 【备注】 1、该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于OpenCV-python的夜间灯光识别源码+使用文档+全部资料(优秀项目).zip (8个子文件)
night_light-main
video2img.py 2KB
night_light
blob.py 3KB
light.py 2KB
light.jpg 3.47MB
blob.jpg 403KB
bin_img.jpg 49KB
lamps_detection.cpp 3KB
171265889347208773632.zip 416B
共 8 条
- 1
资源评论
不走小道
- 粉丝: 3339
- 资源: 5059
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于C++的简易操作系统模拟器.zip
- (源码)基于ROS和PCL的激光与UWB定位仿真系统.zip
- (源码)基于Arduino的iBeacon发送系统.zip
- (源码)基于C语言和汇编语言的简单操作系统内核.zip
- (源码)基于Spring Boot框架的AntOA后台管理系统.zip
- (源码)基于Arduino的红外遥控和灯光控制系统.zip
- (源码)基于STM32的简易音乐键盘系统.zip
- (源码)基于Spring Boot和Vue的管理系统.zip
- (源码)基于Spring Boot框架的报表管理系统.zip
- (源码)基于树莓派和TensorFlow Lite的智能厨具环境监测系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功