如何改进物体检测?
How to improve object detection?
我想改进我的对象检测项目。
首先,为了得到我的实际结果,我使用 absdiff
,然后我在下面的代码中使用以下操作:
cv::threshold(subtractionResultEdges, threshold, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);
Sobel(threshold, sobel, CV_32F, 1, 0);
minMaxLoc(sobel, &minVal, &maxVal);
sobel.convertTo(sobel, CV_8U, 255.0 / (maxVal - minVal), -minVal * 255.0 / (maxVal - minVal));
dilate(subtractionResultEdges, subtractionResultEdges, verticalStructreMat, Point(-1, -1));
erode(subtractionResultEdges, filteredResult, verticalStructreMat, Point(-1, -1));
Canny(filteredResult, filteredResult, 33, 100, 3);
我最后一次操作是findContours(canny_output, *contours, *hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));
这是我使用 accumulate
函数(20 帧)得到的每个函数和前景后的结果:
前景:
http://j71i.imgup.net/foregroundc3dc.PNG
减法:
http://p81i.imgup.net/subtractio2866.PNG
索贝尔:
http://g51i.imgup.net/sobela1fb.PNG
门槛:
http://p46i.imgup.net/treshold14c9.PNG
扩张、侵蚀和 Canny:
http://q68i.imgup.net/canny2e1a.PNG
找到轮廓:
http://v76i.imgup.net/contours6845.PNG
背景也是从accumulate
函数获得的。
你能帮我做更好的角点或轮廓检测吗?我需要它,以像素为单位获取对象大小。
提前致谢!
对 dilate/erode 部分使用更大的内核,可能是 (11, 11) 甚至更大,或者进行多次迭代(这可以设置为参数。这应该连接检测到的各个部分对象更好,然后你的轮廓就会更少。
要计算面积,您可以使用contourArea()
我想改进我的对象检测项目。
首先,为了得到我的实际结果,我使用 absdiff
,然后我在下面的代码中使用以下操作:
cv::threshold(subtractionResultEdges, threshold, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);
Sobel(threshold, sobel, CV_32F, 1, 0);
minMaxLoc(sobel, &minVal, &maxVal);
sobel.convertTo(sobel, CV_8U, 255.0 / (maxVal - minVal), -minVal * 255.0 / (maxVal - minVal));
dilate(subtractionResultEdges, subtractionResultEdges, verticalStructreMat, Point(-1, -1));
erode(subtractionResultEdges, filteredResult, verticalStructreMat, Point(-1, -1));
Canny(filteredResult, filteredResult, 33, 100, 3);
我最后一次操作是findContours(canny_output, *contours, *hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));
这是我使用 accumulate
函数(20 帧)得到的每个函数和前景后的结果:
前景: http://j71i.imgup.net/foregroundc3dc.PNG
减法: http://p81i.imgup.net/subtractio2866.PNG
索贝尔: http://g51i.imgup.net/sobela1fb.PNG
门槛: http://p46i.imgup.net/treshold14c9.PNG
扩张、侵蚀和 Canny:
http://q68i.imgup.net/canny2e1a.PNG
找到轮廓: http://v76i.imgup.net/contours6845.PNG
背景也是从accumulate
函数获得的。
你能帮我做更好的角点或轮廓检测吗?我需要它,以像素为单位获取对象大小。
提前致谢!
对 dilate/erode 部分使用更大的内核,可能是 (11, 11) 甚至更大,或者进行多次迭代(这可以设置为参数。这应该连接检测到的各个部分对象更好,然后你的轮廓就会更少。
要计算面积,您可以使用contourArea()