在opencv中裁剪旋转图像
Cropping a rotated image in opencv
好的,所以我有问题裁剪我的旋转图像在opencv。首先,输入minAreaRect的数组中的点的顺序有关系吗?如果不是,那么我不知道我的代码出了什么问题,但是一旦我裁剪旋转的图像,裁剪的图像只是一个黑色的正方形。我猜是因为我的盒子出了问题。不管怎样,这是我的代码。编辑:我的方法很好,问题是我对roi的观点是错误的。
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);
老实说,我从来没有使用过getRectSubPix,所以我不知道到底是什么错了,但是…为什么不接受投资回报率呢?带有cv::Mat
类的c++ API非常方便。
这里是一个文档,您可以使用cv::Mat
的重载函数调用操作符进行ROI(如果您还不知道的话,这是一个感兴趣的区域)
无论如何,这是一个ROI的片段
cv::Mat img = …;
cv::Mat subImg = img(cv::Rect(0, 0, 100, 100));
cv::Mat subImg = img(cv::Range(0, 0), cv::Range(100, 100));
你有一个cv::RotatedRect
,所以你可以直接使用RotatedRect::boundingRect
属性
相关文章:
- 程序仅正确旋转方形图像
- 在C++中使用OpenCV矩阵中的特征将图像旋转90度
- 无法编译此图像旋转代码
- 如何使用OpenCV从图像中检测旋转对象
- 逐像素旋转和翻转图像
- 使用接口上的C 旋转图像
- 在QML中旋转图像时降低CPU使用情况
- 旋转图像不起作用
- Openframeworks-通过OpenGL调用从图像中心旋转图像
- 如何在QT QWidgets C++中围绕图像中心旋转图像
- 如何在 openGL 中旋转图像
- 轻松BMP旋转图像到任何角度
- 在 C 语言中旋转图像对象和指针
- 在画布上绘制旋转图像
- BMP旋转图像
- 程序旋转图像时发生内存泄漏
- 如何在旋转图像时填充边框
- 在opengl中寻找旋转图像的中心
- 在opencv中裁剪旋转图像
- 旋转图像PPM