使用opencv或其他技术识别出现在图像四angular的黑色图案
我遇到了一个问题,就是如何识别图像中的某些图案。
图像是纯白色的纸张图像,四angular的图案是黑色的。 我想识别图像上的黑色图案?
我在网上冲浪很多,发现opencv是一个答案。 但没有提供任何描述如何使用opencv来实现所需function的提供。
请帮助我一些编码的angular度来看,或提供一些我应该遵循的链接或任何开放源代码库的名称,我应该用来实现此function。 图案图像如下: –
图像由纯白色背景和四个黑色图案组成。我需要识别四个angular落中的黑色图案,然后处理图像。一个angular落显示为椭圆形,以突出显示它。
任何build议将不胜感激。
提前致谢!
也许这个问题对你有帮助,特别是网球识别教程的链接似乎是你正在寻找的东西。
关于如何在iOS上使用OpenCV,您可能需要查看iOS中的OpenCV-iOS和计算机视觉 。
我真的不明白你的问题 – 如果你说:
图像是纯白色的纸张图案,四angular的图案是黑色的。
那么从图像中只掩盖这四个等高线有什么问题呢? 做了四个长度为40像素的面具后,我得到了这个:
要删除小区域,您可以使用形态学操作。 我懂了:
只需在input图像上绘制它们(可选)。 结果如下:
为了实现这个algorithm,我使用了OpenCV库。 我100%肯定它在IOS上工作 – OpenCV团队终于发布了IOS版本 。 所以如果你说:
我尝试运行OpenCV-iOS链接,但项目不运行,它显示错误。
那么我们不能帮你,因为我们不是心灵感应器来看你的问题。 只是小build议 – 尝试谷歌你的问题。 我99%确定它应该帮助。
而且我不会忘记 – 这是c ++代码:
Mat src = imread("input.png"), tmp; //convert image to 1bit cvtColor(src, tmp, CV_BGR2GRAY); threshold(tmp, tmp, 200, 255, THRESH_OTSU); //do masking #define DELTA 40 for (size_t i=0; i<tmp.rows; i++) { for (size_t j=0; j<tmp.cols; j++) { if(!((i < DELTA && j < DELTA) || (i < DELTA && j > tmp.cols - DELTA) || (i > tmp.rows - DELTA && j < DELTA) || (i > tmp.rows - DELTA && j > tmp.cols - DELTA))) { //set color to black tmp.at<uchar>(i, j) = 255; } } } bitwise_not(tmp,tmp); //erosion and dilatation: Mat element = getStructuringElement(MORPH_RECT, Size(2, 2), Point(1, 1)); erode(tmp, tmp, element); dilate(tmp, tmp, element); //(Optional) find contours and draw them: vector<Vec4i> hierarchy; vector<vector<Point2i> > contours; findContours(tmp, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE); for (size_t i=0; i<contours.size(); i++) { drawContours(src, contours, i, Scalar(0, 0, 255), 1); }