将图像的x和y坐标转换为行优先的线性索引

问题描述

假设我有一个尺寸为600 x 400的图像,并且知道图像中某个点的(x,y)坐标。我有一个输出,它是从同一张图像中获得的单个1D数组,该图像具有600 * 400 = 240000的值,其中包含按行优先顺序展开的像素。我需要将(x,y)坐标映射到其相应位置。

I tried the equation pixel = (y-1)*width + x

这是将坐标映射到相应索引的正确方法吗?

解决方法

您在这里有正确的思路。您正在为图像中的每个位置生成行为主的线性索引。 OpenCV(以及最终的NumPy数组,用于在Python中使用OpenCV库处理图像)以行为主的形式布置图像数据。但是,您的表达不太正确,但是您却很接近。(y-1)*width + x假定坐标始于 1 。因为在OpenCV中坐标从 0 开始而不是1,所以它应该只是y*width + x。我将其作为练习让您发现这是正确的。