opencv surf 对象检测单应边界框
opencv surf Object detection Homography bounding box
Why are we adding Point2f( img_object.cols, 0)
to every point in the scene_corners
perspectiveTransform( obj_corners, scene_corners, H);
// Draw lines between the corners (the mapped object in the scene -image_2 )
line( img_matches, scene_corners[0] + Point2f( img_object.cols, 0), scene_corners[1] + Point2f( img_object.cols, 0), Scalar(0, 255, 0), 4 );
line( img_matches, scene_corners[1] + Point2f( img_object.cols, 0), scene_corners[2] + Point2f( img_object.cols, 0), Scalar( 0, 255, 0), 4 );
line( img_matches, scene_corners[2] + Point2f( img_object.cols, 0), scene_corners[3] + Point2f( img_object.cols, 0), Scalar( 0, 255, 0), 4 );
line( img_matches, scene_corners[3] + Point2f( img_object.cols, 0), scene_corners[0] + Point2f( img_object.cols, 0), Scalar( 0, 255, 0), 4 );`
按照Opencv的surf代码,边界多边形不符合预期:
物体在场景中的方向和距离的限制是多少才能有效识别?
here is the output image
第一个问题:
由于 img_object
被填充到场景图像的左侧,因此场景图像中具有 (x, y)
的像素变为 (x+img_object.cols, y)
。因此,您需要添加该偏移量以创建正确的边界框。
关于你的第二个问题:算法的方位和距离的局限性不好说。这取决于很多因素:对象特征、图像分辨率、图像质量等。
在您的案例中,您提到边界多边形与预期不符。但是您期望的边界多边形是什么?我注意到的一件事是您的对象图像并不完全平坦。如果从一个角度看物体图像,生成的单应性看起来很自然。 (如果对象图像是平面的,我认为生成的边界多边形应该具有与该笔记本边缘平行的边界)
Why are we adding Point2f( img_object.cols, 0)
to every point in the scene_corners
perspectiveTransform( obj_corners, scene_corners, H);
// Draw lines between the corners (the mapped object in the scene -image_2 )
line( img_matches, scene_corners[0] + Point2f( img_object.cols, 0), scene_corners[1] + Point2f( img_object.cols, 0), Scalar(0, 255, 0), 4 );
line( img_matches, scene_corners[1] + Point2f( img_object.cols, 0), scene_corners[2] + Point2f( img_object.cols, 0), Scalar( 0, 255, 0), 4 );
line( img_matches, scene_corners[2] + Point2f( img_object.cols, 0), scene_corners[3] + Point2f( img_object.cols, 0), Scalar( 0, 255, 0), 4 );
line( img_matches, scene_corners[3] + Point2f( img_object.cols, 0), scene_corners[0] + Point2f( img_object.cols, 0), Scalar( 0, 255, 0), 4 );`
按照Opencv的surf代码,边界多边形不符合预期:
物体在场景中的方向和距离的限制是多少才能有效识别?
here is the output image
第一个问题:
由于 img_object
被填充到场景图像的左侧,因此场景图像中具有 (x, y)
的像素变为 (x+img_object.cols, y)
。因此,您需要添加该偏移量以创建正确的边界框。
关于你的第二个问题:算法的方位和距离的局限性不好说。这取决于很多因素:对象特征、图像分辨率、图像质量等。
在您的案例中,您提到边界多边形与预期不符。但是您期望的边界多边形是什么?我注意到的一件事是您的对象图像并不完全平坦。如果从一个角度看物体图像,生成的单应性看起来很自然。 (如果对象图像是平面的,我认为生成的边界多边形应该具有与该笔记本边缘平行的边界)