首页 > 编程语言 >Mat的lambda方式像素高效遍历(C++11)

Mat的lambda方式像素高效遍历(C++11)

时间:2024-06-07 20:33:21浏览次数:28  
标签:11 遍历 Mat C++ 像素 lambda

Mat的lambda方式像素高效遍历(C++11)


文章目录


前言

图像遍历是图像处理中的经典操作,快速高效的进行像素遍历对性能的提升至关重要。


一、Mat的lambda方式像素高效遍历

OpenCV4开始支持,通过Mat的forEach方式结合C++11 lambda表达式,实现对Mat对象快速像素遍历。语法如下:

void cv::Mat::forEach(const Functor & operation)
// 其中operation是一个C++11 lambda表达式,同时也是一个匿名的C++函数。

二、代码实现

#include <iostream>
#include <opencv.hpp>
using namespace std;

int main()
{
	cv::Mat src = cv::imread("F:/work_study/algorithm_demo/lambda.jpg");
	if (src.empty())
	{
		cout << "Image Empty" << endl;
		return -1;
	}

	double start = (double)cv::getTickCount();
	// foreach方式遍历图像
	src.forEach<cv::Vec3b>([](cv::Vec3b& p,const int* position)->void {
		p[0] = 255 - p[0];
		p[1] = 255 - p[1];
		p[2] = 255 - p[2];
		});

	cout <<(((double)cv::getTickCount() - start)) / cv::getTickFrequency()<< endl;
	cv::imwrite("dst.jpg", src);
	cv::waitKey(0);
	return 0;
}

src
dst
result


总结

本文主要介绍了一种新的opencv支持的基于lambda像素遍历方式,快速高效。

标签:11,遍历,Mat,C++,像素,lambda
From: https://blog.csdn.net/qq_45045175/article/details/139522218

相关文章

  • [自适应控制] 广义最小方差控制(GMVC)算法理论及其Matlab实现
     基于[自适应控制],广义最小方差控制(GMVC)算法理论与其Matlab实现,包括代码和参考书籍,适合新手学习,注释清晰,适合入门或者进行二创。模型获取:[自适应控制]广义最小方差控制(GMVC)算法理论及其Matlab实现......
  • [自适应控制] 最小方差控制(MVC)算法理论,及其 Matlab代码 实现
      个人整理了[自适应控制]最小方差控制(MVC)算法理论,并使用Matlab代码进行了实现,效果明显,配备了参考文献与书籍,适合新手学习使用。模型代码获取:  [自适应控制]最小方差控制(MVC)算法理论,及其Matlab代码实现......
  • 11本AI人工智能相关电子书推荐(带下载地址)
    1. 《生命3.0》电子书链接:百度网盘请输入提取码提取码:vxnw2. 《千脑智能》电子书链接:百度网盘请输入提取码提取码:we8u3. 《AI3.0》电子书链接:百度网盘请输入提取码提取码:nwu44. 《元宇宙与数字经济》电子书链接:百度网盘请输入提取码提取码......
  • [ABC126F] XOR Matching 题解
    很好的构造题。题意请构造一个长度为$2^{m+1}$的序列$a$,该序列满足:$\foralli\in[1,2^{m+1}],a_i\in[0,2^m-1]$且每个数都恰好出现两次。对于任意一对$(i,j)$满足$a_i=a_j$,$a_i\oplusa_{i+1}\oplus\cdots\oplusa_{j-1}\oplusa_j=k$。$\oplus$表......
  • 【c++基础】八数码难题
    说明在 3×3 的棋盘上,摆有八个棋子,每个棋子上标有 1 至 8 的某一数字。棋盘中留有一个空格,空格用 0 来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了使题目简单,设目标状态为123804765),找到一种最少步骤的移动方法,实现......
  • AcWing 1211:蚂蚁感冒 ← 模拟题
    【题目来源】https://www.acwing.com/problem/content/1213/【题目描述】长100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左,有的朝右。每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。这些蚂蚁中,有1只蚂蚁感冒......
  • c++入门笔记——头文件
    【头文件】c++中,一个程序开头必有头文件。头文件有许多个,它们的关系是并列的。<algorithm>:包含STL通用算法。<bitset>:包含bitset类模板。<cassert>:包含断言宏,如assert。<cctype>:包含字符处理函数。<cerrno>:定义错误码变量errno。<cfenv>:提供有关浮点环境的操作。......
  • [C++] 小游戏 能量1.0.2版本 zty出品
    大家好,欢迎来到今天的代码。我很荣幸能够在这里与大家见面。今天我想向大家介绍的是能量1.0.2版本。本次主要更新了人工智障的智商,没有以前那么笨了。先赞后看养成习惯CODE#include<bits/stdc++.h>#include<windows.h>usingnamespacestd;intrgzz(intlun,intdineng,......
  • windows11搭建 stable-diffusion-webui
    2024年5月22日23:46:57建议电脑配置电脑配置:Intel(R)Core(TM)Ultra5125H1.20GHz32.0GB(31.6GB可用)系统:windows11注意:最好挂上外网,或者设置好访问github的dns,不然很可能失败1,安装Anacondahttps://www.anaconda.com/download/success下载:64-BitGraphical......
  • c++ 静态成员的初始化 友元模板
     来自:https://www.cnblogs.com/fre2technic/archive/2011/03/25/1995044.html 我们定义如下类://A.hclass A{private:    static const int m = 5;    static int n;    static vector<int> buf;};其中包含三个私有的静态类成员,C++规定const静态......