6种减色算法
方法1:使用整数除法
方法2:使用取模运算符方法
方法3:使用位运算符方法
方法4:使用整数除法非就地处理方法
方法5:使用整数除法和迭代器方法
方法6:使用整数除法,按一维数组处理
方法一:使用整数除法
void first(cv::Mat image, int div = 64)
{
// 如果图像每行末尾没有填充额外像素,则当作一维数组处理
if (image.isContinuous()) {
image.reshape(1, // 新的通道数
1); // 新的行数
}
int nr = image.rows; // 行数
// 每行的元素数量(注意不是像素数量)
int nc = image.cols * image.channels();
for (int j = 0; j < nr; j++) { // 遍历每一行
// 取得行j的地址
uchar* data = image.ptr<uchar>(j);
// 遍历当前行每一个元素
for (int i = 0; i < nc; i++) {
// 处理每个元素-------------------------
data[i] = cv::saturate_cast<uch