#include<iostream>
#include<opencv2/opencv.hpp>
#include<vector>
using namespace std;
using namespace cv;
void colorReduce(const Mat &srcImage, Mat &dstImage, int div);
int main()
{
Mat srcImage = imread("G:\\group.jpg");
Mat dstImage;
dstImage.create(srcImage.size(), srcImage.type());
colorReduce(srcImage, dstImage, 64);
imshow("【原图】", srcImage);
imshow("【颜色减缩图】", dstImage);
waitKey(0);
return 0;
}
void colorReduce(const Mat &srcImage, Mat &dstImage, int div)
{
srcImage.copyTo(dstImage);
for (int i = 0; i < dstImage.rows; i++)
{
for (int j = 0; j < dstImage.cols; j++)
{
dstImage.at<Vec3b>(i, j)[0] = dstImage.at<Vec3b>(i, j)[0] / div * div + div / 2;
dstImage.at<Vec3b>(i, j)[1] = dstImage.at<Vec3b>(i, j)[1] / div * div + div / 2;
dstImage.at<Vec3b>(i, j)[2] = dstImage.at<Vec3b>(i, j)[2] / div * div + div / 2;
}
}
}
opencv动态地址方式操作像素-at操作
最新推荐文章于 2022-01-26 16:04:47 发布