OpenCV删除/覆盖特定轮廓

时间:2016-03-20 20:20:26

标签: c++ opencv

我有一个视频,我想删除一些特定的轮廓,我捕捉视频,然后绘制所有的轮廓;

//Prepare the image for findContours
cv::cvtColor(frame, frame, CV_BGR2GRAY);
cv::threshold(frame, frame, 128, 255, CV_THRESH_BINARY);

//Find the contours. Use the contourOutput Mat so the original image doesn't get overwritten
std::vector<std::vector<cv::Point> > contours;
cv::Mat contourOutput = frame.clone();
cv::findContours( contourOutput, contours, CV_RETR_LIST, CV_CHAIN_APPROX_NONE );

//Draw the contours
cv::Mat contourImage(frame.size(), CV_8UC3, cv::Scalar(0,0,0));
cv::Scalar colors[3];
colors[0] = cv::Scalar(255, 0, 0);
colors[1] = cv::Scalar(0, 255, 0);
colors[2] = cv::Scalar(0, 0, 255);
for (size_t idx = 0; idx < contours.size(); idx++) {
    cv::drawContours(contourImage, contours, idx, colors[idx % 3]);
}

结果如下:

Contours

所以我现在要做的就是移除或覆盖像树木和高大的房子这样的物体,基本上轮廓的形状比路标更复杂等。

期望的结果如下所示:

Removed/covered contours

只要我可以获得可以玩的东西,它就不一定非常像。

0 个答案:

没有答案