#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace std;
using namespace cv;
void colorReduce(Mat& inputImage, Mat& outputImage, int div)
{
outputImage = inputImage.clone();
int rowNumber = outputImage.rows;
int colNumber = outputImage.cols * outputImage.channels();
for(int i = 0; i < rowNumber; i++)
{
uchar* data = outputImage.ptr<uchar>(i);
//printf("\n%02X\n", i);
for(int j = 0; j < colNumber; j++)
{
//printf("%02X/", data[j]);
data[j] = data[j] / div * div + div/2;
//printf("%02X ", data[j]);
}
}
}
int main( )
{
Mat srcImage = imread("1.jpg");
imshow("原始图像",srcImage);
Mat dstImage;
dstImage.create(srcImage.rows, srcImage.cols, srcImage.type());
double time0 = static_cast<double>(getTickCount());
colorReduce(srcImage, dstImage, 32);
time0 = ((double)getTickCount() - time0)/getTickFrequency();
cout<<"\t此方法运行时间为: "<<time0<<"秒"<<endl;
imshow("效果图",dstImage);
waitKey(0);
}
![]()