私は、紙の4つの黒い四角を検出し、それらを使用して紙を独自の画像で分離するための最良の方法を見つけようとしています。

私は、紙の4つの黒い四角を検出し、それらを使用して紙を独自の画像で分離するための最良の方法を見つけようとしています。

あなたの画像には黒い四角が4つしかないようですので、あなたがしなければならないことは次のとおりです。
チェックを行います:
A)長方形の面積は、一定の定数よりも大きくなっています(私のソリューションでは100でした)
B)長方形の幅/高さは1.0に近い(私の魂では[ 0.9、1.1 ]の範囲でした)
コード:
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();
結果:

このSOの説明も読んでください。紙を検出するのに4つの正方形は必要ありません。