将图像的 x 和 y 坐标转换为行优先线性索引
Convert x and y coordinates of an image to a row-major linear index
假设我有一张尺寸为 600 x 400 的图像,并且我知道图像中某个点的 (x,y) 坐标。我有另一个输出,它是从具有 600*400 = 240000 个值的同一图像获得的单个一维数组,其中包含按行优先顺序展开的像素。我需要将 (x,y) 坐标映射到它对应的位置。
I tried the equation pixel = (y-1)*width + x
这是将坐标映射到相应索引的正确方法吗?
你的思路是对的。您正在为图像中的每个位置生成一个 row-major 线性索引。 OpenCV(最终是 NumPy 数组,因为它用于在 Python 中使用 OpenCV 库处理图像)以 row-major 形式布置图像数据。但是你的表达不太正确,但你很接近。(y-1)*width + x
假设坐标从 1 开始。因为在 OpenCV 中坐标从 0 开始而不是 1,所以它应该只是 y*width + x
。我将把它留作练习,让您发现这是正确的。
假设我有一张尺寸为 600 x 400 的图像,并且我知道图像中某个点的 (x,y) 坐标。我有另一个输出,它是从具有 600*400 = 240000 个值的同一图像获得的单个一维数组,其中包含按行优先顺序展开的像素。我需要将 (x,y) 坐标映射到它对应的位置。
I tried the equation pixel = (y-1)*width + x
这是将坐标映射到相应索引的正确方法吗?
你的思路是对的。您正在为图像中的每个位置生成一个 row-major 线性索引。 OpenCV(最终是 NumPy 数组,因为它用于在 Python 中使用 OpenCV 库处理图像)以 row-major 形式布置图像数据。但是你的表达不太正确,但你很接近。(y-1)*width + x
假设坐标从 1 开始。因为在 OpenCV 中坐标从 0 开始而不是 1,所以它应该只是 y*width + x
。我将把它留作练习,让您发现这是正确的。