0

请看下面的代码

#include <iostream>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\core\core.hpp>

using namespace std;
using namespace cv;

void reduceColor(Mat&,int=64);

int main()
{
    Mat image = imread("C:/Users/Public/Pictures/Sample Pictures/Koala.jpg");

    namedWindow("Image");
    imshow("Image",image);

    //reduceColor(image,64);

    waitKey(0);
}

void reduceColor(Mat &image,int division)
{
    int numberOfRows = image.rows;
    int numberOfColumns = image.cols * image.channels();

    for(int i=0;i<numberOfRows;i++)
    {
        uchar *data = image.ptr<uchar>(i);

        for(int pixel=0;pixel<numberOfColumns;pixel++)
        {
            data[i] = data[i]/division*division + division/2;
        }
    }

    namedWindow("Image2");
    imshow("Image2",image);


}

这是计算机视觉。我正在尝试通过浏览所有像素和通道来读取图像并减少其颜色。但是,颜色并没有减少!它只是显示原始图像!请帮忙!

4

1 回答 1

2

变量i在嵌套循环中永远不会增加for,但您正在设置data[i]. 所以很可能,第一列中的几个像素在函数调用之后发生了变化,但没有其他变化。

于 2013-04-10T17:17:14.040 回答