Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
车辆监控应用 我开发了一个应用OpenCV监控活车流量的应用程序,在C++中。_Opencv_Computer Vision - Fatal编程技术网

车辆监控应用 我开发了一个应用OpenCV监控活车流量的应用程序,在C++中。

车辆监控应用 我开发了一个应用OpenCV监控活车流量的应用程序,在C++中。,opencv,computer-vision,Opencv,Computer Vision,目前,我正在做背景减法,以获得背景,然后我找到轮廓 我使用createBackgroundSubtractorGMG方法查找bg 我面临的问题是在夜间,当车辆的前照灯打开时。道路上的照明区域也被检测为新交通。我有没有办法克服这个问题,或者我选择了一种完全错误的交通监控方法 我采用的交通检测方法如下: 空隙检测(垫架){ Mat-bg; 矢量通道(3); 矢量通道; CVT颜色(框架、背景、CV_BGR2YCrCb); 拆分(bg,通道); 均衡器历史(通道[0],通道[0]); 均衡器(信道[1

目前,我正在做背景减法,以获得背景,然后我找到轮廓

我使用createBackgroundSubtractorGMG方法查找bg

我面临的问题是在夜间,当车辆的前照灯打开时。道路上的照明区域也被检测为新交通。我有没有办法克服这个问题,或者我选择了一种完全错误的交通监控方法


我采用的交通检测方法如下:

空隙检测(垫架){

Mat-bg;
矢量通道(3);
矢量通道;
CVT颜色(框架、背景、CV_BGR2YCrCb);
拆分(bg,通道);
均衡器历史(通道[0],通道[0]);
均衡器(信道[1],信道[1]);
通道。推回(通道[0]);
通道。推回(通道[1]);
通道。推回(通道[2]);
cv::合并(通道,背景);
cv::GaussianBlur(bg,bg,cv::Size(5,5),1.5);
pMOG->apply(背景、前景);
cv::GaussianBlur(前,前,cv::Size(11,11),1.5);
findContours(前部、等高线、等高线、等高线外部、等高线链近似简单);
向量等高线_多边形(等高线.size());
向量boundRect(contours.size());
双区;
布尔发现;
对于(size_t i=0;i
}


发现这个问题很有用,如果没有看到图像,这个问题就无法正确回答。你想“监视”什么?提供更多关于您想要实现的目标的详细信息我需要检测、跟踪和统计ROI中的车辆数量。我在问题中附上了一张图片,显示了我的问题。基本上,在夜间,当车辆的前照灯打开时,很难找到和跟踪物体。现在我正在YCrCb颜色空间的Y和r区域进行直方图均衡化,在一定程度上,它的性能正常。但是,有没有其他技术可以通过减少光线的影响来增强检测。我采用的交通检测方法如下:空洞检测(Mat帧){矢量通道(3);矢量通道;cvtColor(Frame,bg,CV_BGR2YCrCb);split(bg,通道);equalizeHist(通道[0],通道[0]);均衡器历史(通道[1],通道[1]);通道。向后推(通道[0]);///合并三个通道。向后推(通道[1]);///合并三个通道。向后推(通道[2]);///合并三个通道
Mat bg;
vector<Mat> Channels(3);
vector<Mat> channels;
cvtColor(frame,bg,CV_BGR2YCrCb);
split(bg,Channels);
equalizeHist(Channels[0], Channels[0]);
equalizeHist(Channels[1], Channels[1]);
channels.push_back(Channels[0]);     
channels.push_back(Channels[1]);     
channels.push_back(Channels[2]);     
cv::merge(channels, bg);
cv::GaussianBlur(bg, bg, cv::Size(5,5), 1.5);
pMOG->apply(bg, fore);
cv::GaussianBlur(fore, fore, cv::Size(11,11), 1.5);
findContours(fore,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_SIMPLE);
vector<vector<Point> > contours_poly(contours.size());
vector<Rect> boundRect(contours.size());
double area;
bool found;
for(size_t i = 0; i < contours.size(); i++ )
{
    boundRect[i] = boundingRect( Mat(contours[i]) );
}