资源简介
基于OpenCV的红绿灯识别系统,能通过图像识别裁剪出图片中的红绿灯状态。

代码片段和文件信息
#include “stdafx.h“
#include
#include
#include
#include
#include
using namespace cv;
using namespace std;
void mask(const cv::Mat& image double minHue double maxHue double minSat double maxSat cv::Mat& mask);
void kuang(IplImage*src IplImage*dst);
void main()
{
IplImage*src_image = cvLoadImage(“cc.jpg“);//原图
cvNamedWindow(“原图“);
cvShowImage(“原图“ src_image);
IplImage *hsv = cvCreateImage(cvGetSize(src_image) IPL_DEPTH_8U 3);//RGB转换成HSV
cvCvtColor(src_image hsv CV_BGR2HSV);
IplImage*gray = cvCreateImage(cvGetSize(src_image) IPL_DEPTH_8U 1);//灰度图像
cvCvtColor(src_image gray CV_BGR2GRAY);
//cvNamedWindow(“gray“);
//cvShowImage(“gray“ gray);
kuang(hsv gray);
IplImage*erzhi = cvCreateImage(cvGetSize(src_image) IPL_DEPTH_8U 1);//二值化
cvThreshold(gray erzhi 0 255 CV_THRESH_BINARY);
cvNamedWindow(“二值图像“);
cvShowImage(“二值图像“ erzhi);
IplImage*image = cvCreateImage(cvGetSize(src_image) IPL_DEPTH_8U 1);
cvCopy(erzhi image); //image已经变成处理后的图像
int count_height[2048] = { 0 };
int height = src_image->height;
int width = src_image->width;
CvScalar color;//表示颜色
for (int j = height - 1; j >= 0; j--)
{
for (int i = 0; i < width; i++)
{
color = cvGet2D(image j i);//(ij)的像素点值
if (color.val[0] != 0)
{
count_height[j]++;
}
}
}
int maxl = 0;
int minl = 0;
for (int j = height - 1; j >= 0; j--)
{
if (count_height[j] > 0)
{
minl = j;//最小行
}
}
for (int j = 0; j < height; j++)
{
if (count_height[j] > 0)
{
maxl = j;//最大行
}
}
int m_max_value = 0;
m_max_value = count_height[0];
m_max_value = maxl - minl + 1;
CvRect ROI_rect;//以左上角顶点和长宽设置一个矩形区域
ROI_rect.x = 0;
ROI_rect.y = minl;
ROI_rect.width = src_image->width;
ROI_rect.height = m_max_value;
cvSetImageROI(gray ROI_rect);//设置图像的感兴趣区域
IplImage*ROI = cvCreateImage(cvSize(ROI_rect.width m_max_value) IPL_DEPTH_8U 1);//裁剪红绿灯区域
cvCopy(gray ROI);
//显示出黑白的红绿灯区域:
cvNamedWindow(“上下裁剪“);
cvShowImage(“上下裁剪“ ROI);
int x_max = 0;
int x_min = 0;
int max_value_count_row = 0;
int count_row[2048] = { 0 };
////统计红绿灯的宽度
for (int i = width - 1; i >= 0; i--)
{
for (int j = 0; j < height; j++)
{
color = cvGet2D(image j i);//(ij)的像素点值
if (color.val[0] != 0)
{
count_row[i]++;
}
}
}
for (int i = width - 1; i >= 0; i--)
{
if (count_row[i] > 0)
{
x_min = i;//最小行
}
}
for (int i = 0; i < width; i++)
{
if (count_row[i] > 0)
{
x_max = i;//最大行
}
}
max_value_count_row = x_max - x_min + 1;
CvRect ROI_Plate;
ROI_Plate.x = x_min;
ROI_Plate.y = minl;
ROI_Plate.width = max_value_count_row;
ROI_Plate.height = m_max_value;
cvSetImageROI(src_image ROI_Plate);
IplImage*plate_image = cvCreateImage(cvSize(ROI_Plate.width ROI_Plate.height) src_image->depth src_
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-12-25 23:23 ConsoleApplication1\
目录 0 2017-12-25 20:57 ConsoleApplication1\ConsoleApplication1\
文件 60 2013-07-22 01:18 ConsoleApplication1\ConsoleApplication1\ClassDiagram.cd
文件 6086 2017-12-25 20:57 ConsoleApplication1\ConsoleApplication1\ConsoleApplication1.cpp
文件 8447 2017-12-22 20:17 ConsoleApplication1\ConsoleApplication1\ConsoleApplication1.vcxproj
文件 1326 2017-10-23 23:23 ConsoleApplication1\ConsoleApplication1\ConsoleApplication1.vcxproj.filters
文件 165 2017-10-23 23:55 ConsoleApplication1\ConsoleApplication1\ConsoleApplication1.vcxproj.user
目录 0 2017-12-25 20:57 ConsoleApplication1\ConsoleApplication1\Debug\
目录 0 2017-12-25 20:57 ConsoleApplication1\ConsoleApplication1\Debug\ConsoleA.58AFB739.tlog\
文件 10894 2017-12-25 20:57 ConsoleApplication1\ConsoleApplication1\Debug\ConsoleA.58AFB739.tlog\CL.read.1.tlog
文件 2050 2017-12-25 20:57 ConsoleApplication1\ConsoleApplication1\Debug\ConsoleA.58AFB739.tlog\CL.write.1.tlog
文件 206 2017-12-25 20:57 ConsoleApplication1\ConsoleApplication1\Debug\ConsoleA.58AFB739.tlog\ConsoleApplication1.lastbuildstate
文件 2058 2017-12-25 20:57 ConsoleApplication1\ConsoleApplication1\Debug\ConsoleA.58AFB739.tlog\cl.command.1.tlog
文件 2726 2017-12-25 20:57 ConsoleApplication1\ConsoleApplication1\Debug\ConsoleA.58AFB739.tlog\li
文件 5216 2017-12-25 20:57 ConsoleApplication1\ConsoleApplication1\Debug\ConsoleA.58AFB739.tlog\li
文件 1096 2017-12-25 20:57 ConsoleApplication1\ConsoleApplication1\Debug\ConsoleA.58AFB739.tlog\li
文件 2229 2017-12-25 20:57 ConsoleApplication1\ConsoleApplication1\Debug\ConsoleApplication1.log
文件 276597 2017-12-25 20:57 ConsoleApplication1\ConsoleApplication1\Debug\ConsoleApplication1.obj
文件 1638400 2017-12-22 20:07 ConsoleApplication1\ConsoleApplication1\Debug\ConsoleApplication1.pch
文件 11811 2017-12-22 20:07 ConsoleApplication1\ConsoleApplication1\Debug\stdafx.obj
文件 584704 2017-12-25 20:57 ConsoleApplication1\ConsoleApplication1\Debug\vc120.idb
文件 1470464 2017-12-25 20:57 ConsoleApplication1\ConsoleApplication1\Debug\vc120.pdb
文件 1173 2017-12-22 20:22 ConsoleApplication1\ConsoleApplication1\OpencvDebugeconfig.props
文件 1088 2017-10-23 23:45 ConsoleApplication1\ConsoleApplication1\OpencvReleaseconfig.props
文件 1594 2017-10-23 23:23 ConsoleApplication1\ConsoleApplication1\ReadMe.txt
文件 105641 2017-12-21 18:12 ConsoleApplication1\ConsoleApplication1\aa.jpg
文件 17544 2017-12-21 18:15 ConsoleApplication1\ConsoleApplication1\bb.jpg
文件 167941 2017-12-21 16:46 ConsoleApplication1\ConsoleApplication1\cc.jpg
文件 10373 2017-12-23 14:47 ConsoleApplication1\ConsoleApplication1\dd.jpg
文件 225 2017-10-23 23:23 ConsoleApplication1\ConsoleApplication1\stdafx.cpp
文件 234 2017-10-23 23:23 ConsoleApplication1\ConsoleApplication1\stdafx.h
............此处省略31个文件信息
相关资源
- vspd7.2.308.zip
- CVSNT 完整覆盖版防TortoiseCVS中文乱码
- VisualStudioUninstaller vs卸载工具
- 组态王驱动开发包3.0.0.7(中文)
- vSphere6.06.56.7通用版注册机
- 多窗口后台鼠标连点器
- 使用选择性重传协议实现UDP可靠通信
- VC 获得文件属性 获取文件的创建时
- 读者写者问题(读者优先,写者优先
- 用VC 编写的仿QQ聊天室程序源代码
- ado数据库MFC图书管理系统vs2010
- 外点法程序
- 外罚函数程序
- qt-电子点菜系统
- 推箱子及人工智能寻路C 源代码
- 自己写的航空订票系统c 版--数据结构
- 数据结构实验魔王语言
- MUSIC算法c 实现
- C 餐厅叫号系统(QT平)
- 国际象棋c 完整版
-
ob
jectARX给Auto CAD加工具条 - 画图程序MFC/VC/VC CRectTracker 串行化
- MFC网络编程实例
- c 课程设计 职工信息管理系统
- 基于OpenCV的数字识别468815
- VC 游戏编程—附源代码
- 使用opencv去掉二值化图像中黑色面积
- IpHlpApi.h&IpHlpApi.lib
- 清华大学 c 郑莉 ppt课件
- c 程序判断离散数学中命题公式
评论
共有 条评论