Opencv开发笔记六:像素的读写(二)读写效率比较

本文通过计算程序运行时间来分析OpenCV中读写像素的效率,对比了指针操作、迭代器和at方法。实验表明,指针操作效率最高,适用于简单遍历;迭代器次之,适合大量数据存储;at方法虽然最慢但方便,常用于复杂场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、如何计算效率

要计算程序运行的效率,就需要获得程序运行到当前位置所用运行的时间

opencv中提供两个简便的计时函数getTickCount()和getTickFrequency()

    double t = (double)getTickCount();
    // do something ...
    t = ((double)getTickCount() - t)/getTickFrequency();

使用方式如上

二、代码测试

编写代码实现

               创建一张500*500 3通道图像,连续向3通道写入随机数的测试程序,然后同等条件下测试效率

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;
RNG rng(1234);

void p_RW_Pixel(Mat &src){
	for (int row = 0; row < src.rows; row++){
		Vec3b * cur = src.ptr<Vec3b>(row);  // 获取当前行的指针
		for (int col = 0; col < src.cols; col++){
			if (src.channels() == 3){
				cur[col][0] = rng.uniform(0, 255) % 255; // b赋值随机颜色
				cur[col][1] = rng.uniform(0, 255) % 255;
				cur[col][2] = rng.uniform(0, 255) % 255;
			}
		}
	}
}

void iter_RW_Pixel(Mat &am
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值