【问题标题】:Working with image pixels使用图像像素
【发布时间】:2011-01-13 07:51:41
【问题描述】:

我正在尝试在这里做一个项目,我想实现以下内容:

我估计了一个旋转矩阵和平移矩阵,现在我在某个位置有一个图像,我想将所有图像像素乘以旋转矩阵并将结果添加到平移矩阵......

我的问题是如何处理像素?我的意思是如何从图像中提取像素以执行我上面提到的操作?

用opencv或c++给我建议都可以

*我需要知道怎么做这个操作 new_p(x,y) = old_p(x,y)* 旋转矩阵 + 平移矩阵。 我正在定义像 IplImage() 那样的图像,3 通道图像。 现在我需要做几何变换,但我不知道如何使用 old_p(x,y) 这意味着旧像素*

谢谢。

【问题讨论】:

  • 这取决于您对“图像”的实现。它是颜色值的原始数组、手动滚动的图像类,还是使用某种图像加载库,例如 FreeImage?
  • 我没有完全理解你的意思,但我会告诉你我在做什么。我正在处理视频,我想将第二张图片返回到上一个位置,即第一帧的位置。
  • 关键是答案将完全取决于您如何处理这些图像。就目前而言,无法回答。 C++ 中没有图像类。据我们所知,您可能正在谈论一个字节数组或某个库“图像”类。

标签: c++ opencv


【解决方案1】:

在 Opencv 中,您需要的功能在手册的“几何图像转换”部分。在您的情况下,由于您已经有了旋转矩阵和平移,warpAffine 是选择的函数 (link to function documentation)。您传递的变换矩阵的前两列是旋转矩阵,第三列是平移向量(以防您不熟悉齐次坐标)。

【讨论】:

  • 答案仍然有效。 warpAffine.
【解决方案2】:

基本思想是您需要为最终结果图像中的每个像素设置一个颜色值。因此,您需要找到一个函数,将(旋转和平移的)像素映射到最终结果图像的每个 (x,y) 位置。

给定一个将原始图像坐标转换为目标图像坐标的矩阵,您最终可能会反转该转换并将其应用于每个目标图像像素,加上或减去一些优化。

【讨论】:

  • 回答的第一部分;是的,这就是我需要的,我的问题是使用哪些功能以及如何使用?对于第二部分,我正在将图像位置转换为之前的位置
  • 正如我们已经说过的,这取决于您如何处理这些图像。 C++ 在标准库中不包含与图像处理相关的任何内容。您正在将图像读取到数组中,或者您正在使用某些第三方 API。如果没有更多信息,我们无法给您答案。
  • 如果您愿意,我甚至可以给您代码以及您感兴趣的任何更多信息。我正在使用 opencv,它是一个用于处理图像的库。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-24
  • 1970-01-01
  • 2020-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多