相关疑难解决方法(0)

OpenCV C++/Obj-C:检测一张纸/方形检测

我在我的测试应用程序中成功实现了OpenCV平方检测示例,但现在需要过滤输出,因为它非常混乱 - 或者我的代码是错误的?

我对本文的四个角点感兴趣,以减少偏斜(如此)和进一步处理......

输入输出: 输入输出

原始图片:

点击

码:

double angle( cv::Point pt1, cv::Point pt2, cv::Point pt0 ) {
    double dx1 = pt1.x - pt0.x;
    double dy1 = pt1.y - pt0.y;
    double dx2 = pt2.x - pt0.x;
    double dy2 = pt2.y - pt0.y;
    return (dx1*dx2 + dy1*dy2)/sqrt((dx1*dx1 + dy1*dy1)*(dx2*dx2 + dy2*dy2) + 1e-10);
}

- (std::vector<std::vector<cv::Point> >)findSquaresInImage:(cv::Mat)_image
{
    std::vector<std::vector<cv::Point> > squares;
    cv::Mat pyr, timg, gray0(_image.size(), CV_8U), gray;
    int thresh = 50, N = 11;
    cv::pyrDown(_image, pyr, cv::Size(_image.cols/2, _image.rows/2));
    cv::pyrUp(pyr, …
Run Code Online (Sandbox Code Playgroud)

c++ opencv image-processing objective-c computer-vision

171
推荐指数
3
解决办法
11万
查看次数

如何在叶图像中分割感兴趣区域

目的: 我想检测叶片图像的某些区域。我发现了我的相关问题,该问题是在白板上使用图像处理(从白色背景中移除叶子)的分段对象(叶子),但我的问题超出了它,它的目的是提取/分割患病区域的叶子。

问题: 如何准确分割和提取图像中叶片的患病区域。

我的尝试:
1. inRange()OpenCV函数 -设置绿色阈值,这样我就不会为非绿色区域(棕色,灰色等)设置多个inRange值,并且希望删除绿色;我应用了高斯模糊,在分割之前将其从RGB转换为HSV

链接到 image1,image2输入和结果的文件:image1
结果:绿色被分割(认为不是很准确),但是我仍然不知道如何提取非绿色区域(下一步)

图片2: 结果:黑色小圆圈被包含/被认为是绿色,这应该不应该

我是OpenCV(也是C ++)的新手,我已经阅读了几种分割技术(例如,聚类方法Fuzzy-C和k-means等),但是我无法确定要对图像使用哪种分割技术。我还从阅读的文章中了解到,没有通用的分割技术可以应用于所有图像。

因此,我想知道哪种技术(聚类方法,基于区域的区域,直方图等)或过程最适合于我拥有的各种图像,以便准确地分割所述图像。

非常感谢你。

c++ opencv image-processing feature-extraction image-segmentation

0
推荐指数
1
解决办法
2096
查看次数