我在我的测试应用程序中成功实现了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) 目的: 我想检测叶片图像的某些区域。我发现了我的相关问题,该问题是在白板上使用图像处理(从白色背景中移除叶子)的分段对象(叶子),但我的问题超出了它,它的目的是提取/分割患病区域的叶子。
问题: 如何准确分割和提取图像中叶片的患病区域。
我的尝试:
1. inRange()OpenCV函数
-设置绿色阈值,这样我就不会为非绿色区域(棕色,灰色等)设置多个inRange值,并且希望删除绿色;我应用了高斯模糊,在分割之前将其从RGB转换为HSV
链接到 image1,image2输入和结果的文件:image1
:
结果:绿色被分割(认为不是很准确),但是我仍然不知道如何提取非绿色区域(下一步)
图片2:
结果:黑色小圆圈被包含/被认为是绿色,这应该不应该
我是OpenCV(也是C ++)的新手,我已经阅读了几种分割技术(例如,聚类方法Fuzzy-C和k-means等),但是我无法确定要对图像使用哪种分割技术。我还从阅读的文章中了解到,没有通用的分割技术可以应用于所有图像。
因此,我想知道哪种技术(聚类方法,基于区域的区域,直方图等)或过程最适合于我拥有的各种图像,以便准确地分割所述图像。
非常感谢你。
c++ opencv image-processing feature-extraction image-segmentation