资源简介
基于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 trafficDetection1\Debug\
目录 0 2018-01-23 14:26 trafficDetection1\trafficDetection1\
目录 0 2018-01-11 12:54 trafficDetection1\trafficDetection1\Debug\
目录 0 2018-01-11 12:54 trafficDetection1\trafficDetection1\Debug\trafficD.D9CDD426.tlog\
文件 11278 2018-01-06 11:51 trafficDetection1\trafficDetection1\Debug\trafficD.D9CDD426.tlog\CL.read.1.tlog
文件 466 2018-01-06 11:51 trafficDetection1\trafficDetection1\Debug\trafficD.D9CDD426.tlog\CL.write.1.tlog
文件 756 2018-01-06 11:51 trafficDetection1\trafficDetection1\Debug\trafficD.D9CDD426.tlog\cl.command.1.tlog
文件 173 2018-01-06 11:51 trafficDetection1\trafficDetection1\Debug\trafficD.D9CDD426.tlog\trafficDetection1.lastbuildstate
文件 0 2018-01-06 11:51 trafficDetection1\trafficDetection1\Debug\trafficD.D9CDD426.tlog\unsuccessfulbuild
文件 1853 2018-01-06 11:51 trafficDetection1\trafficDetection1\Debug\trafficDetection1.log
文件 355328 2018-01-06 11:51 trafficDetection1\trafficDetection1\Debug\vc120.idb
文件 626688 2018-01-06 11:51 trafficDetection1\trafficDetection1\Debug\vc120.pdb
目录 0 2018-01-11 12:54 trafficDetection1\trafficDetection1\result\
文件 47669 2018-01-06 11:24 trafficDetection1\trafficDetection1\result\1.jpg
文件 129568 2018-01-06 13:38 trafficDetection1\trafficDetection1\result\1_1.jpg
文件 4694 2018-01-06 13:37 trafficDetection1\trafficDetection1\trafficDetection1.cpp
文件 7312 2018-01-06 11:51 trafficDetection1\trafficDetection1\trafficDetection1.vcxproj
文件 958 2018-01-06 11:51 trafficDetection1\trafficDetection1\trafficDetection1.vcxproj.filters
目录 0 2018-01-11 12:54 trafficDetection1\trafficDetection1\x64\
目录 0 2018-01-11 12:54 trafficDetection1\trafficDetection1\x64\Debug\
目录 0 2018-01-11 12:54 trafficDetection1\trafficDetection1\x64\Debug\trafficD.D9CDD426.tlog\
文件 11218 2018-01-06 13:38 trafficDetection1\trafficDetection1\x64\Debug\trafficD.D9CDD426.tlog\CL.read.1.tlog
文件 664 2018-01-06 13:38 trafficDetection1\trafficDetection1\x64\Debug\trafficD.D9CDD426.tlog\CL.write.1.tlog
文件 742 2018-01-06 13:38 trafficDetection1\trafficDetection1\x64\Debug\trafficD.D9CDD426.tlog\cl.command.1.tlog
文件 2988 2018-01-06 13:38 trafficDetection1\trafficDetection1\x64\Debug\trafficD.D9CDD426.tlog\li
文件 7350 2018-01-06 13:38 trafficDetection1\trafficDetection1\x64\Debug\trafficD.D9CDD426.tlog\li
文件 624 2018-01-06 13:38 trafficDetection1\trafficDetection1\x64\Debug\trafficD.D9CDD426.tlog\li
文件 171 2018-01-06 13:38 trafficDetection1\trafficDetection1\x64\Debug\trafficD.D9CDD426.tlog\trafficDetection1.lastbuildstate
文件 2457 2018-01-06 13:38 trafficDetection1\trafficDetection1\x64\Debug\trafficDetection1.log
文件 675224 2018-01-06 13:38 trafficDetection1\trafficDetection1\x64\Debug\trafficDetection1.obj
............此处省略10个文件信息
- 上一篇:C++编写的数据加密程序源代码6个
- 下一篇:C++语法分析器
评论
共有 条评论