sizin görüntü üzerinde sadece 4 siyah kareler var bu yüzden yapmanız gereken şey olduğunu gibi görünüyor: griler
Do eşiği için
- dönüştürme görüntü
- siyah hatlarını bul (OpenCV'de bunu yapmadan önce, görüntünüzü tersine çevirmelisiniz, çünkü varsayılan olarak OpenCV beyaz konturları bulur)
- Bu konturlar boyunca dolaşın ve boundin'i bulun g dikdörtgen. (Benim soultion o A) Dikdörtgenin alanı benim çözümde (bazı sabit o Dikdörtgenin genişlik/yükseklik yakın 1.0)
B) oldu büyüktür
oldu:
kontrol yap [0.9, 1.1] aralık)
kodu:
Mat img = imread("test.jpg"), gray;
vector<Vec4i> hierarchy;
vector<vector<Point2i> > contours;
cvtColor(img, gray, CV_BGR2GRAY);
threshold(gray, gray, 100, 255, THRESH_BINARY);
bitwise_not(gray, gray);
findContours(gray, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE);
for(size_t i=0; i<contours.size(); i++)
{
Rect rect = boundingRect(contours[i]);
double k = (rect.height+0.0)/rect.width;
if (0.9<k && k<1.1 && rect.area()>100)
{
drawContours(img, contours, i, Scalar(0,0,255));
}
}
imshow("result", img);
waitKey();
Sonuç:
Ayrıca this SO discussion okumak - 4 kareler kağıdı algılamada Buna ihtiyacım yok.
StackOverflow'a Hoş Geldiniz. Şu ana kadar ne denedin, bu senin için çalışmıyor mu? Yardımcı olup olmadığını görmek için [bu soru] 'na (http://stackoverflow.com/q/11424002/62576) baktınız mı? Lütfen bunu kendiniz çözmek için bir çaba gösterin (bir resim göndermekten başka) ve buradaki bir kişi muhtemelen yardımcı olabilir. –