多种方法:OpenCV中修改像素RGB值

由NV21转换到RGB:

https://blog.csdn.net/quantum7/article/details/151816652

  • 读取像素

结果正确。

复制代码
			int B = srcFrame.at<cv::Vec3b>(i, j)[0];
			int G = srcFrame.at<cv::Vec3b>(i, j)[1];
			int R = srcFrame.at<cv::Vec3b>(i, j)[2];
  • 改变像素:方法1

    复制代码
          srcFrame.at<cv::Vec3b>(i*width+j) = cv::Vec3b(0x00, 0x00, 0xFF);
  • 改变像素:方法2

    复制代码
          srcFrame.at<cv::Vec3b>(i*width+j)[0] = 0xFF;
          srcFrame.at<cv::Vec3b>(i*width+j)[1] = 0x00;
          srcFrame.at<cv::Vec3b>(i*width+j)[2] = 0x00;
  • 改变像素:方法3

    复制代码
          srcFrame.data[i * srcFrame.step + j * srcFrame.channels() + 0] = 0; // 设置蓝色通道为最大值(红色)
          srcFrame.data[i * srcFrame.step + j * srcFrame.channels() + 1] = 0; // 设置绿色通道为最小值(无绿色)
          srcFrame.data[i * srcFrame.step + j * srcFrame.channels() + 2] = 0xFF; // 设置红色通道为最小值(无红色)
  • 改变像素:方法4

个人觉得这个方法最好。

复制代码
        cv::Vec3b& pixel = srcFrame.at<cv::Vec3b>(i, j);
        //BGR
        pixel[0] = 0;
        pixel[1] = 0;
        pixel[2] = 0xFF;
  • 改变像素:方法5

    复制代码
          uchar* data = srcFrame.ptr<uchar>(0);
          data[i * srcFrame.step + j * srcFrame.channels() + 0] = 0;
          data[i * srcFrame.step + j * srcFrame.channels() + 1] = 0;
          data[i * srcFrame.step + j * srcFrame.channels() + 2] = 0xFF;
相关推荐
鹿心肺语5 小时前
前端HTML转PDF的两种主流方案深度解析
前端·javascript
Sagittarius_A*6 小时前
特征检测:SIFT 与 SURF(尺度不变 / 加速稳健特征)【计算机视觉】
图像处理·人工智能·python·opencv·计算机视觉·surf·sift
海石6 小时前
去到比北方更北的地方—2025年终总结
前端·ai编程·年终总结
一个懒人懒人6 小时前
Promise async/await与fetch的概念
前端·javascript·html
Mintopia6 小时前
Web 安全与反编译源码下的权限设计:构筑前后端一致的防护体系
前端·安全
输出输入6 小时前
前端核心技术
开发语言·前端
Mintopia6 小时前
Web 安全与反编译源码下的权限设计:构建前后端一体的信任防线
前端·安全·编译原理
林深现海6 小时前
Jetson Orin nano/nx刷机后无法打开chrome/firefox浏览器
前端·chrome·firefox
黄诂多7 小时前
APP原生与H5互调Bridge技术原理及基础使用
前端
前端市界7 小时前
用 React 手搓一个 3D 翻页书籍组件,呼吸海浪式翻页,交互体验带感!
前端·架构·github