Image processing 如何使用OpenCV检测纸张上的注册标记?
我一直在试图找到最好的方法来检测纸张上的4个黑色方块,并使用它们将纸张隔离在自己的图像中Image processing 如何使用OpenCV检测纸张上的注册标记?,image-processing,opencv,computer-vision,Image Processing,Opencv,Computer Vision,我一直在试图找到最好的方法来检测纸张上的4个黑色方块,并使用它们将纸张隔离在自己的图像中 您的图像上似乎只有4个黑色方块,因此您需要做的是: 将图像转换为灰色 Do阈值 查找黑色轮廓(在OpenCV中执行此操作之前,必须反转图像,因为默认情况下OpenCV查找白色轮廓) 在这些轮廓中循环并找到边界矩形 进行检查: A) 矩形的面积大于某个常数(在我的解决方案中,它是100) B) 矩形的宽度/高度接近1.0(在我的分析中,它是[0.9,1.1]范围) 守则: Mat img = imread("
您的图像上似乎只有4个黑色方块,因此您需要做的是:
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();
Mat img=imread(“test.jpg”),灰色;
向量层次;
矢量等值线;
CVT颜色(img、灰色、CV_bgr2灰色);
阈值(灰度、灰度、100255、阈值二元);
按位_not(灰色、灰色);
findContours(灰色、轮廓、层次、CV_RETR_外部、CV_CHAIN_近似_SIMPLE);
对于(size_t i=0;我将来到StackOverflow。到目前为止,您尝试了哪些对您不起作用的方法?您是否查看了这些方法是否有帮助?请您自己尝试解决这些问题(而不是发布图像),这里的人可能会提供帮助。