好吧,我有问题在opencv中裁剪我的旋转图像。首先,数组中的点在馈入minAreaRect中的顺序是否重要?如果没有,那么我不知道我的代码有什么问题,但只要我裁剪旋转的图像,裁剪后的图像只是一个黑色方块。我假设,因为我的盒子是错误的。无论如何,这里是我的代码。编辑:我的方法是好的问题是我的观点是错误的。在opencv中裁剪一个旋转的图像
int len = max(ImageAd.cols, ImageAd.rows);
cv::Point2f pt(len/2., len/2.);
cv:: Mat r = cv::getRotationMatrix2D(pt, -angled, 1.0);
cv::warpAffine(ImageAd, ImageAd, r, ImageAd.size(), INTER_CUBIC);
vector<cv::Point> points;
points.push_back(Pt3);
points.push_back(Pt4);
points.push_back(Pt1);
points.push_back(Pt2);
cv::RotatedRect box = cv::minAreaRect(cv::Mat(points));
cv::Size box_size = box.size;
cv::getRectSubPix(ImageAd, box_size, box.center, ImageAd);
cv::imshow("cropped", ImageAd);
为什么不采取roi? – nkint
矩形的坐标是什么?你可以运行Point2f pts [4]; rect.points(PTS);并打印点以确保它们位于垫子范围内(如果您的原始点云太靠近边界,则它们可能为负值)。 – Vlad
nkint - roi不是旋转矩形。它的边与坐标轴对齐,这并不总是你想要的。 – Vlad