使用OpenCV在C ++中绘制对象的轮廓

时间:2018-03-22 12:52:15

标签: c++ opencv opencv-contour opencv-drawcontour

我想达到测量物体的尺寸(如最后附加的图像),还需要计算高度和数量。 iOS应用程序中使用OpenCV框架的对象宽度。

成功整合CvVideoCamera并能够启动视频

现在问题出现在'processImage'方法中。

我尝试了什么:

- (void)processImage:(cv::Mat &)image;
{
    Mat gray;
    cvtColor(image, gray, CV_BGRA2GRAY);
    cv::GaussianBlur(gray, gray, cvSize(7, 7), 0);
    cv::Canny(gray, gray, 50, 100);
    cv::dilate(gray, gray, cv::getStructuringElement(cv::MORPH_RECT, cvSize(2, 2)));

    std::vector<std::vector<cv::Point > > contours;
    cv::findContours(gray, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);

    for (unsigned int i = 0; i < contours.size(); ++i)
    {
        cv::RotatedRect rect = cv::minAreaRect(contours[i]);
        cv::Point2f points[4];
        rect.points(points);

        std::vector<cv::Point> boundingContour;

        for (unsigned int j = 0; j < 4; ++j)
            boundingContour.push_back(points[j]);

        std::vector<std::vector<cv::Point>> boxContours;
        boxContours.push_back(boundingContour);

        cv::drawContours(image, boxContours, 0, cvScalar(0, 255, 0), 2);
    }

}

结果:

enter image description here

需要达到的目标:(编辑)

正如GPPK在C ++中提到评论Measuring Objects中的链接。

老实说,我不知道c ++,但我尽我所能,但在不深入了解的情况下努力向前迈进。如果有人可以提供帮助,那将会非常值得感谢。提前谢谢。

0 个答案:

没有答案