Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用“旋转”时的图像;findHomography“;及;“透视图”;_C++_Opencv_Computer Vision - Fatal编程技术网

C++ 使用“旋转”时的图像;findHomography“;及;“透视图”;

C++ 使用“旋转”时的图像;findHomography“;及;“透视图”;,c++,opencv,computer-vision,C++,Opencv,Computer Vision,我目前正在开发一个ALPR系统。为了首先检测板,我使用所述方法 问题出现在某些图像上。在使用findHomography和warpPerspective后,它给了我旋转的平板图像 这是给我带来问题的原始图像。 这是检测到的板轮廓 这是扭曲的图像 如你所见,它旋转了90度。在其他例子中,检测工作非常出色 特定的代码段 cv::Mat warpped_plate( PLATE_HEIGHT, PLATE_WIDTH, CV_8UC3 ); vector< cv::Point> re

我目前正在开发一个ALPR系统。为了首先检测板,我使用所述方法

问题出现在某些图像上。在使用findHomography和warpPerspective后,它给了我旋转的平板图像

这是给我带来问题的原始图像。

这是检测到的板轮廓

这是扭曲的图像

如你所见,它旋转了90度。在其他例子中,检测工作非常出色

特定的代码段

cv::Mat warpped_plate( PLATE_HEIGHT, PLATE_WIDTH, CV_8UC3 );
vector< cv::Point> real_plate_polygons;
real_plate_polygons = {cv::Point(PLATE_WIDTH, PLATE_HEIGHT), cv::Point(0, PLATE_HEIGHT), cv::Point(0, 0), cv::Point(PLATE_WIDTH, 0)};
cv::Mat homography = cv::findHomography( plate_polygons, real_plate_polygons );
cv::warpPerspective(source_img, warpped_plate, homography, cv::Size(PLATE_WIDTH, PLATE_HEIGHT));
cv::垫翘曲板(板高、板宽、cv_8UC3);
向量真实的平面多边形;
实板多边形={cv::Point(板宽度,板高度),cv::Point(0,板高度),cv::Point(0,0),cv::Point(板宽度,0)};
cv::Mat单纯形=cv::findHomography(平板多边形、实平板多边形);
cv::翘曲透视图(源图像、翘曲板、单应性、cv::尺寸(板宽度、板高度));
其中,plate_多边形包含板的四个点(并且是正确的,因为它们用于在遮罩中绘制白色框)


有什么想法吗?提前谢谢

正如尼科所提到的,问题在于平面多边形中点的顺序。生成它们的算法在起始点上不一致(在我的例子中,从较低的位置开始)。

然后,
plate\u polygon
显然顺序错误。循环输入,以实现在
实板\u多边形中的角点顺序。