6
我一直在試圖找到檢測紙上4個黑色正方形的最佳方法,並使用它們將紙張分離出它自己的圖像。如何在使用OpenCV的紙張上檢測註冊標記?
我一直在試圖找到檢測紙上4個黑色正方形的最佳方法,並使用它們將紙張分離出它自己的圖像。如何在使用OpenCV的紙張上檢測註冊標記?
看來你的圖像上只有4個黑方塊,所以你必須做的是:
執行檢查:
A)矩形的面積越大,一些恆定(在我的解決辦法是)
B)矩形的寬度/高度爲接近1.0(在我soultion它是[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();
結果:
又讀this SO discussion - 你不需要有4個平方檢測紙張。
歡迎來到StackOverflow。你迄今爲止嘗試過哪些方法不適合你?你看過[這個問題](http://stackoverflow.com/q/11424002/62576),看看它是否有幫助?請顯示一些努力來解決這個問題(除了發佈圖片),並且這裏的某個人可能會幫忙。 – 2012-07-17 23:23:46