多种方法: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;
相关推荐
用户461169657283 分钟前
网站 HTTPS 不稳定?证书排查指南
前端
n876515 分钟前
Playwright Java WEB UI 自动化实现框架与逻辑
java·前端·ui
keyipatience16 分钟前
TypeScript学习(1)
前端·javascript·学习·typescript·html·css3
xifangge20251 小时前
基于 JavaScript 实现 CNC 数控切削参数与螺纹公差纯前端核算引擎
开发语言·前端·javascript
wangruofeng1 小时前
2026 Web 技术选型指南,AI 时代如何选择适合项目的技术栈
前端·aigc·ai编程
honkun61 小时前
vue 表格组件 vxe-table 修改滚动条样式,修改滚动条样式,统一宽度、颜色与自动隐藏
前端·javascript·vue.js
爱勇宝2 小时前
研究数字孪生的这半年,做了个 Demo,也有了一些新想法
前端·程序员
不可能片场2 小时前
工程实践 一个缓存把选片从十分钟压到一分钟
前端·electron
前端小万2 小时前
探索副业五个月,最终以放弃告终
前端·后端·面试
FRing032 小时前
JavaScript入门到精通二十四(正则表达式、元字符、修饰符)
开发语言·前端·javascript·正则表达式