多种方法: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;
相关推荐
玫城3 小时前
[ VUE ] 封装通用数组校验组件,el-input内使用
前端·javascript·vue.js
scott1985127 小时前
opencv 畸变系数的说明
人工智能·数码相机·opencv
弓.长.7 小时前
React Native 鸿蒙跨平台开发:实现一个多功能单位转换器
javascript·react native·react.js
南半球与北海道#7 小时前
前端打印(三联纸票据打印)
前端·vue.js·打印
摘星编程8 小时前
React Native for OpenHarmony 实战:ToggleSwitch 切换开关详解
javascript·react native·react.js
董世昌418 小时前
深入浅出 JavaScript 常用事件:从原理到实战的全维度解析
前端
满栀5858 小时前
分页插件制作
开发语言·前端·javascript·jquery
qq_406176148 小时前
深入剖析JavaScript原型与原型链:从底层机制到实战应用
开发语言·前端·javascript·原型模式
qianbo_insist8 小时前
opencv技巧:投影变换代替旋转
opencv·计算机视觉
弓.长.9 小时前
React Native 鸿蒙跨平台开发:BottomSheet 底部面板详解
javascript·react native·react.js