gpt4 book ai didi

c++ - 我可以在不更改数据的情况下更改垫子解释吗? (说镜像吧)

转载 作者:太空宇宙 更新时间:2023-11-03 22:31:45 25 4
gpt4 key购买 nike

我有一个 mat,它形成一个 n x n 矩阵,我需要从多个方向在其上执行一个算法。

假设我想循环 mat 经典的 y = [0..n] 和 x = [0..n] 并在其上应用一些函数。

然后我需要循环 mat y = [n..0] 和 x = [n..0] 这基本上是“另一种方式”。我基本上需要从所有 4 个方向接近 mat,(例如最后一个 y = [0..n]/x = [n..0] 和 y = [n..0]/x = [0..n])

现在我不想将代码复制四次,但我需要应用的操作比简单地将最小值、最大值和方向值传递给一个函数(如

void apply(cv::Mat & mat, uint xStart, uint xEnd, uint xDirection, uint yStart, uint yEnd, uint yDirection);

因为算法确实向前看,等等

现在我在考虑是否可以通过更改数据的标题解释来转换给定矩阵而不更改其数据。然后我将能够始终使用相同的参数调用 apply

有一些操作,如 cv::transform、cv::transpose 等,但它们也会创建数据拷贝,这是我不想要的。

最佳答案

不,你不能。如果您考虑内存存储,这实际上非常简单。内存存储是线性的(按行),在不更改数据的情况下,您只能更改一个步骤以沿线性内存移动。这意味着您只能 reshape 和更改类型。

转置和反射操作会改变数据。这仍然比为 4 个搜索方向编写和运行单独的算法更清晰、更快。当然,存储搜索结果可能会很麻烦,因为它们的解释将取决于 Mat 配置。所以,为了避免进一步的复杂化,我的建议是编写 4 个独立的算法。

关于c++ - 我可以在不更改数据的情况下更改垫子解释吗? (说镜像吧),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22616219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com