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;
		}
	}
}

在這裏插入圖片描述

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