Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
514 views
in Technique[技术] by (71.8m points)

objective c - Recognize Black patterns appearing on the four corners of the image ios using opencv or some other technique

I am stuck with a problem that is how to recognize some patterns in image.

the image is the image of paper which is pure white and the patterns are in four corners are in black. I want to recognize the black patterns on the image?

I surf a lot on the net and found that the opencv as a answer. but there is nothing provided that describe how to use opencv in order to achieve the required feature.

Please help me with some coding point of view or provide some link which I should follow or any name of any open source library which I should use to achieve this feature. The image for pattern is below:- enter image description here

The image consist of pure white background and four black patterns in the corner.I need to recognize these black patterns in the all four corners all then process the image.One corner shown in oval to highlight it.

Any suggestions will be highly appreciated.

Thanks in advance!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I really don't understand your problem - if you say:

The image is the image of paper which is pure white and the patterns are in four corners are in black.

Then what's the problem to mask only these four contours from image? After doing mask with 4 squares with length 40 pixels I got this:

enter image description here

To remove small areas you can use morphological operations. I got this:

enter image description here

And just draw them (optional) on input image. Here's result:

enter image description here

To implement this algorithm I use OpenCV library. I'm 100% sure that it works on IOS - OpenCV team finally published IOS version. So if you say:

I tried running the OpenCV-iOS link but the project does not run, it is showing errors.

Then we can't help you with that because we are not telepathists to see your problem. Just small suggestion - try to google your problem. I'm 99% sure that it should help.

And lest I forget - here's c++ code:

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);
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...