vector<Point2f> 转cv::remap 可使用数据 实例
时间: 2024-09-27 09:12:16 浏览: 34
嵌入式系统/ARM技术中的一种在不支持Remap的系统中构建JFFS2的实现
`vector<Point2f>`是一个包含OpenCV `Point2f` 类型元素的动态数组,用于存储二维点坐标。当你需要将这样的向量转换成图像变换矩阵 (`cv::Mat` 对象) 并应用到`cv::remap`函数上时,你需要创建一个映射表,通常是通过生成一个源图像坐标对应的目标图像坐标的映射。
例如,假设你有一个表示图像像素坐标的`vector<Point2f>`,比如`srcPoints`,你想将其转换为另一个大小或经过某种变换后的目标图像`dstPoints`:
```cpp
std::vector<cv::Point2f> srcPoints = { // 假设这是原始图像的某些点
cv::Point2f(50, 60),
cv::Point2f(100, 80),
cv::Point2f(150, 100)
};
// 创建一个同样大小的目标图像,这里是3x3,以便演示转换
int dstWidth = 3;
int dstHeight = 3;
std::vector<cv::Point2f> dstPoints(dstWidth * dstHeight);
cv::remap(srcImage, dstImage, // srcImage是你想要变换的输入图像
srcPoints.data(), // 将srcPoints转换为cv::Mat以便处理
dstPoints, // 目标点集,它会根据你的变换计算
INTER_LINEAR, // 或者其他插值方法
cv::BORDER_CONSTANT); // 边界处理选项
```
这里的关键在于`cv::remap`函数接受两个`Point2f`指针作为参数,一个是原图像上的每个像素在新图像中的位置,另一个则是新图像的实际大小或预定义的目标点集合。
阅读全文