这里只给出实例代码,具体的自己琢磨。
cv::Mat processMat;
for (row = 0; row < processMat.rows; row++)
{
for (col = 0; col < processMat.cols; col++)
{
processMat.at<Vec3b>(row, col)[0] = 0;
processMat.at<Vec3b>(row, col)[1] = 125;
processMat.at<Vec3b>(row, col)[2] = 0;
}
}
使用时注意:
1. Vec3b - for uchar, Vec3i - for int, Vec3f - for float, Vec3d - for double
2. 在访问时做指针偏移是需要注意每次的偏移量。
如: const unsigned char* Mforeground = foreground.ptr<unsigned char>(row);
这样每次访问Mforeground[col]时,只偏unsigned char去找元素,需要格外注意,否则处理图像时会不正确。