相关疑难解决方法(0)

OpenCV C++/Obj-C:高级方检测

一段时间我问了一个关于方形检测的问题,karlphillip提出了一个不错的结果.

现在我想更进一步,找到边缘不完全可见的方块.看看这个例子:

例

有任何想法吗?我正在使用karlphillips代码:

void find_squares(Mat& image, vector<vector<Point> >& squares)
{
    // blur will enhance edge detection
    Mat blurred(image);
    medianBlur(image, blurred, 9);

    Mat gray0(blurred.size(), CV_8U), gray;
    vector<vector<Point> > contours;

    // find squares in every color plane of the image
    for (int c = 0; c < 3; c++)
    {
        int ch[] = {c, 0};
        mixChannels(&blurred, 1, &gray0, 1, ch, 1);

        // try several threshold levels
        const int threshold_level = 2;
        for (int l = 0; …
Run Code Online (Sandbox Code Playgroud)

c++ opencv image-processing objective-c object-detection

33
推荐指数
3
解决办法
5万
查看次数

OpenCV C++/Obj-C:正确的对象检测

作为某种"假期项目",我正在玩OpenCV并想要检测和测量内容.

当前工作流程(早期阶段 - 检测):

  1. 转换为灰度(cv :: cvtColor)
  2. 应用自适应阈值(cv :: adaptiveThreshold)
  3. 应用canny边缘检测(cv :: Canny)
  4. 寻找轮廓(cv :: findContours)

我的结果有点蹩脚,我不确定什么是正确的方向.我已经让cvBlob在我目前的设置下工作(OSX 10.7.2,Xcode 4.2.1)它是一个更好的方法吗?如果是这样,我该如何以正确的方式实施?

或者我首先需要背景扣除?我尝试过,但之后无法找到轮廓

这是我的形象: 图像来衡量

这是我的输出,当我将轮廓绘制回第一张图像时: 产量

UPDATE

我在我的程序中工作,我的输出看起来有点不同......

- (IBAction)processImage:(id)sender
{
    cv::Mat forground = [[_inputView image] CVMat];
    cv::Mat result = [self isolateBackground:forground];
    [_outputView setImage:[NSImage imageWithCVMat:result]];
}

- (cv::Mat)isolateBackground:(cv::Mat &)_image
{
    int rh = 255, rl = 100, gh = 255, gl = 0, bh = 70, bl = 0;
    cv::cvtColor(_image, _image, CV_RGB2HSV_FULL);
    cv::Mat element = getStructuringElement(cv::MORPH_RECT, cv::Size(5, 5));
    cv::Mat bgIsolation;
    cv::inRange(_image, cv::Scalar(bl, gl, rl), …
Run Code Online (Sandbox Code Playgroud)

c++ opencv objective-c background-subtraction

12
推荐指数
1
解决办法
7313
查看次数