Opencv C++ 統計處理時間 圖片元素指針訪問
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
using namespace std;
using namespace cv;
void colorReduce(Mat& inputImage, Mat& outputImage, int div);
int main()
{
double timeStart = static_cast<double>(getTickCount());
Mat srcImage = imread("../data/1.jpg");
imshow("原始圖片", srcImage);
Mat dstImage;
dstImage.create(srcImage.rows, srcImage.cols, srcImage.type());
colorReduce(srcImage, dstImage, 32);
double timeEnd = ((double)getTickCount() - timeStart) / getTickFrequency();
cout << "運行時間:" << timeEnd << endl;
imshow("處理後", dstImage);
waitKey(0);
destroyAllWindows();
}
void colorReduce(Mat& inputImage, Mat& outputImage, int div)
{
outputImage = inputImage.clone();
int rowNumer = outputImage.rows;
int colNumer = outputImage.cols * outputImage.channels();
for (int i = 0; i < rowNumer; i++)
{
uchar* data = outputImage.ptr<uchar>(i);
for (int j = 0; j < colNumer; j++)
{
data[j] = data[j] / div * div + div / 2;
}
}
}