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没有检测到图像中的每一枚硬币呢?