Closed yeyuxmf closed 6 years ago
cv::RotatedRect rect = cv::RotatedRect(cv::Point(centerX, centerY), cv::Size(widths, heights), -angle); cv::Point2f vertices[4]; rect.points(vertices); for (int k = 0; k < 4; k++) { cv::line(img, vertices[k], vertices[(k + 1) % 4], cv::Scalar(0, 0, 255)); } 我使用你的标记信息,使用此函数在图像上把框画出来,不知道正确与否?因为画框与角度太相关。 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
第二个问: 此外,我在标记的时候,每个目标对应一些列的凸包点, std::vector<std::vector>pointBase(position.size()); Rect = cv::minAreaRect(pointBase[i]); // 第 i 个目标 cv::Point2f P[4]; Rect.points(P); 以此求出目标的外接矩形、宽高、角度,此角度不能直接用,它是[-90, 0],因此我采用图像矩求的外接矩形的角度。
第三问: 请问是你的标记信息是否是规定x方向就是宽,y方向就是高? 目前训练不收敛,应该是自己准备的数据的角度有问题,还请大大你指点,非常感谢!!!
cv::RotatedRect rect = cv::RotatedRect(cv::Point(centerX, centerY), cv::Size(widths, heights), -angle); cv::Point2f vertices[4]; rect.points(vertices); for (int k = 0; k < 4; k++) { cv::line(img, vertices[k], vertices[(k + 1) % 4], cv::Scalar(0, 0, 255)); } 我使用你的标记信息,使用此函数在图像上把框画出来,不知道正确与否?因为画框与角度太相关。 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
第二个问: 此外,我在标记的时候,每个目标对应一些列的凸包点, std::vector<std::vector>pointBase(position.size());
Rect = cv::minAreaRect(pointBase[i]); // 第 i 个目标
cv::Point2f P[4];
Rect.points(P);
以此求出目标的外接矩形、宽高、角度,此角度不能直接用,它是[-90, 0],因此我采用图像矩求的外接矩形的角度。
第三问: 请问是你的标记信息是否是规定x方向就是宽,y方向就是高? 目前训练不收敛,应该是自己准备的数据的角度有问题,还请大大你指点,非常感谢!!!