如何使用OpenCV在此图像中检测中国象棋棋子?
我尝试过使用HoughCircles,但没有找到圆圈.
Mat src = imread( "x.jpg", CV_LOAD_IMAGE_GRAYSCALE);
GaussianBlur( src, src, Size(9, 9), 2, 2 );
vector circles;
HoughCircles( src, circles, CV_HOUGH_GRADIENT, 1, src.rows/16);
cout << circles.size() << endl;
// The output is: 0
还测试了斑点检测器,但结果不正确.
Mat im = imread( "x.jpg", IMREAD_GRAYSCALE );
vector kps;
SimpleBlobDetector().detect(im, kps);
Mat im_kps;
drawKeypoints( im, kps, im_kps, Scalar(0,0,255), DrawMatchesFlags::DRAW_RICH_KEYPOINTS );
imshow("keypoints", im_kps );
waitKey(0);
解决方法:
当从图像m中隔离红色时可能出现的一个问题是棋子与红色背景的混合.在运行inRange()时,会发生这种情况: