Opencv C++ 统计运行时间 图片元素指针访问

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++)
	{
		//取第 i 行数据指针
		uchar* data = outputImage.ptr<uchar>(i);

		for (int j = 0; j < colNumer; j++)
		{
			//修改每行数据内容  颜色降维度
			data[j] = data[j] / div * div + div / 2;
		}
	}
}

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章