OpenCV复制到图像边界处剪切的ROI的规范方式
OpenCV canonical way to copy into a ROI clipped at the image borders
如果使用类似的东西
sourceMat.copyTo(destinationMat(roiRect));
在roiRect
具有sourceMat
的大小的情况下,如果roiRect
部分位于destinationMat
的边界之外,则失败。
在OpenCV的无数方法中,有没有一种简单的方法可以将该副本剪辑到有效的目标区域,而无需计算源矩阵和目标矩阵的剪辑ROI?
您可以使用warpAffine并将变换矩阵设置为正确的平移。如果希望目标矩形具有不同的大小,则可以将缩放添加到变换中。
我用这个来制作二维翻译矩阵:
inline cv::Mat TranslationMat2d(const float dx, const float dy) {
cv::Mat result = cv::Mat::eye(cv::Size(3, 3), CV_32FC1);
result.at<float>(2, 0) = dx;
result.at<float>(2, 1) = dy;
return result;
}
然后使用warpAffine,类似于:
warpAffine(srcImage, dstImage, translationMat, imgSize, INTER_LINEAR, BORDER_CONSTANT, backgroundColor);
相关文章:
- 如何在c++中为模板函数实例创建快捷方式
- 在c代码之间共享数据的最佳方式
- 在C++中将函数压缩为两种方式
- 以螺旋方式打印矩阵的程序.(工作不好)
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 创建引用向量的优雅方式
- Constexpr替代了新的放置方式,可以让内存中的对象保持未初始化状态
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- 不同/较旧的处理器运行c++代码的方式是否不同
- 从嵌套在std::映射中的std::列表中删除元素的最佳方式
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 重载方法的方式会在使用临时调用时生成编译器错误
- 在reactor中存储eventHandlers的最佳方式是什么
- 如何以优化的方式同时迭代两个间距不相等的数组
- 以线程安全的方式调用"QQuickPaintedItem::updateImage(const QImage&image)"(no QThread)
- 为什么C++有不同的变量初始化方式?
- 在AVX通道中混洗的最佳方式
- 如何重新定义MPI_FLOAT,MPI_DOUBLE以 typedef 的方式
- 如何以静态代码分析友好的方式使用 #define 防护?
- OpenCV复制到图像边界处剪切的ROI的规范方式