交通标识牌检测c++代码


基于opencv2.4.9+vs2013的交通标识牌检测c++代码,调试通过。
资源截图
代码片段和文件信息
#include
#include
#define PI 3.1415926

using namespace std;
using namespace cv;

void RGB2HSV(double red double green double blue double& hue double& saturation double& intensity)
{

double r g b;
double h s i;

double sum;
double minRGB maxRGB;
double theta;

r = red / 255.0;
g = green / 255.0;
b = blue / 255.0;

minRGB = ((r minRGB = (minRGB
maxRGB = ((r>g) ? (r) : (g));
maxRGB = (maxRGB>b) ? (maxRGB) : (b);

sum = r + g + b;
i = sum / 3.0;

if (i<0.001 || maxRGB - minRGB<0.001)
{

h = 0.0;
s = 0.0;
}
else
{
s = 1.0 - 3.0*minRGB / sum;
theta = sqrt((r - g)*(r - g) + (r - b)*(g - b));
theta = acos((r - g + r - b)*0.5 / theta);
if (b <= g)
h = theta;
else
h = 2 * PI - theta;
if (s <= 0.01)
h = 0;
}

hue = (int)(h * 180 / PI);
saturation = (int)(s * 100);
intensity = (int)(i * 100);
}

void fillHole(const Mat srcBw Mat &dstBw)
{
Size m_Size = srcBw.size();
Mat Temp = Mat::zeros(m_Size.height + 2 m_Size.width + 2 srcBw.type());
srcBw.copyTo(Temp(Range(1 m_Size.height + 1) Range(1 m_Size.width + 1)));

cv::floodFill(Temp Point(0 0) Scalar(255));

Mat cutImg;
Temp(Range(1 m_Size.height + 1) Range(1 m_Size.width + 1)).copyTo(cutImg);

dstBw = srcBw | (~cutImg);
}

int main()
{
Mat srcImg = imread(“result\1.jpg“);
//resize(srcImg srcImg Size(204.8 137.6));重置图片大小为什么检测不到
imshow(“srcImg“srcImg);
Mat srcImgCopy;
srcImg.copyTo(srcImgCopy);

int width = srcImg.cols;//图像宽度
int height = srcImg.rows;//图像高度
double B = 0.0 G = 0.0 R = 0.0 H = 0.0 S = 0.0 V = 0.0;
Mat matRgb = Mat::zeros(srcImg.size() CV_8UC1);
int x y; //循环
for (y = 0; y {
for (x = 0; x {
// 获取BGR值
B = srcImg.at(y x)[0];
G = srcImg.at(y x)[1];
R = srcImg.at(y x)[2];
RGB2HSV(R G B H S V);
//红色范围
if ((H >= 337 && H <= 360 || H >= 0 && H <= 10) && S >= 12 && S <= 100 && V>20 && V<99)
{
matRgb.at(y x) = 255;  
}
}
}
blur(matRgb matRgb Size(3 3));
Mat element = getStructuringElement(MORPH_ELLIPSE Size(2 * 1 + 1 2 * 1 + 1) Point(1 1));
Mat element1 = getStructuringElement(MORPH_ELLIPSE Size(2 * 3 + 1 2 * 3 + 1) Point(3 3));
erode(matRgb matRgb element);//腐蚀  
imshow(“erode“ matRgb);
dilate(matRgb matRgb element1);//膨胀  
imshow(“dilate“ matRgb);
fillHole(matRgb matRgb);//填充  
imshow(“fillHole“ matRgb);
Mat matRgbCopy;
matRgb.copyTo(matRgbCopy);
//cvtColor(srcImg grayImg CV_BGR2GRAY);     
vector>contours; //轮廓  
vector hierarchy;//分层  
findContours(matRgb contours hierarchy CV_RETR_EXTERNAL CV_CHAIN_APPROX_SIMPLE Point(0 0));//寻找轮廓  
vector> contours_poly(contours.size());  //近似后的轮廓点集  
vector boundRect(contours.size());  //包围点集的最小矩形vector  
vector center(contours.size());  //包围点集的最小圆形vector  
vector radius(contours.size

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-01-23 14:26  trafficDetection1
     目录           0  2018-01-23 14:26  trafficDetection1Debug
     目录           0  2018-01-23 14:26  trafficDetection1 rafficDetection1
     目录           0  2018-01-11 12:54  trafficDetection1 rafficDetection1Debug
     目录           0  2018-01-11 12:54  trafficDetection1 rafficDetection1Debug rafficD.D9CDD426.tlog
     文件       11278  2018-01-06 11:51  trafficDetection1 rafficDetection1Debug rafficD.D9CDD426.tlogCL.read.1.tlog
     文件         466  2018-01-06 11:51  trafficDetection1 rafficDetection1Debug rafficD.D9CDD426.tlogCL.write.1.tlog
     文件         756  2018-01-06 11:51  trafficDetection1 rafficDetection1Debug rafficD.D9CDD426.tlogcl.command.1.tlog
     文件         173  2018-01-06 11:51  trafficDetection1 rafficDetection1Debug rafficD.D9CDD426.tlog rafficDetection1.lastbuildstate
     文件           0  2018-01-06 11:51  trafficDetection1 rafficDetection1Debug rafficD.D9CDD426.tlogunsuccessfulbuild
     文件        1853  2018-01-06 11:51  trafficDetection1 rafficDetection1Debug rafficDetection1.log
     文件      355328  2018-01-06 11:51  trafficDetection1 rafficDetection1Debugvc120.idb
     文件      626688  2018-01-06 11:51  trafficDetection1 rafficDetection1Debugvc120.pdb
     目录           0  2018-01-11 12:54  trafficDetection1 rafficDetection1
esult
     文件       47669  2018-01-06 11:24  trafficDetection1 rafficDetection1
esult1.jpg
     文件      129568  2018-01-06 13:38  trafficDetection1 rafficDetection1
esult1_1.jpg
     文件        4694  2018-01-06 13:37  trafficDetection1 rafficDetection1 rafficDetection1.cpp
     文件        7312  2018-01-06 11:51  trafficDetection1 rafficDetection1 rafficDetection1.vcxproj
     文件         958  2018-01-06 11:51  trafficDetection1 rafficDetection1 rafficDetection1.vcxproj.filters
     目录           0  2018-01-11 12:54  trafficDetection1 rafficDetection1x64
     目录           0  2018-01-11 12:54  trafficDetection1 rafficDetection1x64Debug
     目录           0  2018-01-11 12:54  trafficDetection1 rafficDetection1x64Debug rafficD.D9CDD426.tlog
     文件       11218  2018-01-06 13:38  trafficDetection1 rafficDetection1x64Debug rafficD.D9CDD426.tlogCL.read.1.tlog
     文件         664  2018-01-06 13:38  trafficDetection1 rafficDetection1x64Debug rafficD.D9CDD426.tlogCL.write.1.tlog
     文件         742  2018-01-06 13:38  trafficDetection1 rafficDetection1x64Debug rafficD.D9CDD426.tlogcl.command.1.tlog
     文件        2988  2018-01-06 13:38  trafficDetection1 rafficDetection1x64Debug rafficD.D9CDD426.tloglink.command.1.tlog
     文件        7350  2018-01-06 13:38  trafficDetection1 rafficDetection1x64Debug rafficD.D9CDD426.tloglink.read.1.tlog
     文件         624  2018-01-06 13:38  trafficDetection1 rafficDetection1x64Debug rafficD.D9CDD426.tloglink.write.1.tlog
     文件         171  2018-01-06 13:38  trafficDetection1 rafficDetection1x64Debug rafficD.D9CDD426.tlog rafficDetection1.lastbuildstate
     文件        2457  2018-01-06 13:38  trafficDetection1 rafficDetection1x64Debug rafficDetection1.log
     文件      675224  2018-01-06 13:38  trafficDetection1 rafficDetection1x64Debug rafficDetection1.obj
............此处省略10个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)