Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 如何从图像中提取硬币?_Opencv - Fatal编程技术网

Opencv 如何从图像中提取硬币?

Opencv 如何从图像中提取硬币?,opencv,Opencv,所以我想分割和提取图像中的硬币,并将其用于其他目的。但我先把那些硬币取出来时遇到了问题。背景不应该总是白色的 我尝试过阈值化并找到轮廓,但它返回的轮廓比预期的多。我该怎么办 cv:: Mat coinpic,backgroundpic,diffpic,newpic,threshold; cv::cvtColor([self cvMatFromUIImage:coins], coinpic, cv::COLOR_BGR2GRAY); cv::threshold(coinpic, d

所以我想分割和提取图像中的硬币,并将其用于其他目的。但我先把那些硬币取出来时遇到了问题。背景不应该总是白色的

我尝试过阈值化并找到轮廓,但它返回的轮廓比预期的多。我该怎么办

cv:: Mat coinpic,backgroundpic,diffpic,newpic,threshold;
    cv::cvtColor([self cvMatFromUIImage:coins], coinpic, cv::COLOR_BGR2GRAY);
    cv::threshold(coinpic, diffpic, 200, 255, cv::THRESH_BINARY_INV+cv::THRESH_OTSU);
    vector<vector<cv::Point>>contours;
    vector<cv::Vec4i>hierarchy;
    cv::findContours(diffpic, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE);
    cout<<contours.size()<<endl;
    return [self UIImageFromCVMat:diffpic];

我所期望的结果如下链接所示:

硬币检测是一个典型的示例,您很可能希望对圆使用Hough变换。它是在OpenCV中实现的,您可以找到几个示例,例如,这些示例是在Python中实现的,但是您可以找到许多其他示例


您可能会在第一次尝试时获得更多或不是所有轮廓,要解决此问题,您应该使用param1和param2查看opencv

请为您的问题添加更多上下文。你能分享一个输入图像的例子吗?你希望程序在什么条件下工作…?添加一个你正在使用的输入图像的例子。我已经用输入图像的例子编辑了我的文章,但是如果Hough Circle没有检测到图像中的每一枚硬币呢?