cvGet?D用于获取数组中指定下标的元素值,cvSet?D用于为数组中指定下标的元素赋予值。
以cvGet2D和cvSet2D为例:
CvScalar cvGet2D (const CvArr * arr, int idx0, int idx1);
void cvSet2D (const CvArr * arr, int idx0, int idx1, CvScalar value);
索引值idx0代表数组元素的行下标,idx1代表数组元素的列下标。
与OpenCV中图像坐标系相对应,idx0,idx1表示的是图像上指定高度和宽度值位置处所对应的像素值。
因此,在使用时,需要依照如下的方式进行:
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++)
CvScalar cs = cvGet2D(img, y, x);
cvSet2D(img, y, x, cs);
}