四、像素操作(读写像素、修改像素值)
1、遍历图像像素

int height = gray_src.rows;//获取图像行数
int width = gray_src.cols;//获取图像列数
for (int row = 0; row < height; row++) {//遍历图像各个像素点的像素值for (int col = 0; col < width; col++) {}
}

2、获取图像像素值
读一个GRAY像素点的像素值

int gray = image.at<uchar>(row, col);

读一个RGB像素点的像素值

int b = image.at<Vec3b>(row, col)[0];//获取row行col列0通道的像素值,Vec3b可以用来读取三通道的RGB图像像素值
int g = image.at<Vec3b>(row, col)[1];//获取row行col列1通道的像素值
int r = image.at<Vec3b>(row, col)[2];//获取row行col列2通道的像素值

3、修改像素值
灰度图像image.at<uchar> (row,col) = 目标像素值
RGB三通道图像:

image.at<Vec3b>(row, col)[0] = 目标像素值;//修改row行col列0通道的像素值
image.at<Vec3b>(row, col)[1] = 目标像素值;//修改row行col列1通道的像素值
image.at<Vec3b>(row, col)[2] = 目标像素值;//修改row行col列2通道的像素值

空间图像赋值image = Scalar(0);
生成灰度图:

gray_src.at<uchar>(row, col) = min(r, min(b,g));//取RGB中的最小值作为灰度值
gray_src.at<uchar>(row, col) = max(r, max(b,g));//取RGB中的最大值作为灰度值

4、反转图像色彩
反转灰度图像gray_image.at<uchar>(row, col) = 255 - gray;
反转RGB图像

image.at<Vec3b>(row, col)[0] = 255 - b;//反转row行col列0通道的像素值
image.at<Vec3b>(row, col)[1] = 255 - g;//反转row行col列1通道的像素值
image.at<Vec3b>(row, col)[2] = 255 - r;//反转row行col列2通道的像素值

利用函数实现图像色彩反转bitwise_not(原图像, 反转后图像);

5、去掉图像某一通道色彩

image.at<Vec3b>(row, col)[0] = b;//保持row行col列0通道的像素值
image.at<Vec3b>(row, col)[1] = g;//保持row行col列1通道的像素值
image.at<Vec3b>(row, col)[2] = 0;//清零row行col列2通道的像素值

反转图像色彩示例代码:

#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main(int argc, char** argv) {Mat src;src = imread("C:/Users/26839/Pictures/测试.png");if (src.empty()) {cout << "could not load image...\n" << endl;return -1;}imshow("input", src);Mat dst;dst.create(src.size(), src.type());//构造一张与src大小类型一致的图片dstint height = src.rows;int width = src.cols;int nc = src.channels();for (int row = 0; row < height; row++) {//遍历图像各个像素点的像素值for (int col = 0; col < width; col++) {if (nc == 1) {//使单通道图片色彩反转int gray = src.at<uchar>(row, col);//获取像素值dst.at<uchar>(row, col) = 255 - gray;//反转图像} else if (nc == 3) {//使3通道图片色彩反转int r = src.at<Vec3b>(row, col)[0];//获取row行col列0通道的像素值,Vec3b可以用来读取三通道的RGB图像像素值int g = src.at<Vec3b>(row, col)[1];//获取row行col列1通道的像素值int b = src.at<Vec3b>(row, col)[2];//获取row行col列2通道的像素值dst.at<Vec3b>(row, col)[0] = 255 - r;//反转row行col列0通道的像素值dst.at<Vec3b>(row, col)[1] = 255 - g;//反转row行col列1通道的像素值dst.at<Vec3b>(row, col)[2] = 255 - b;//反转row行col列2通道的像素值}}}//bitwise_not(src, dst);//反转图像色彩的函数imshow("invert", dst);waitKey(0);destroyAllWindows();return 0;
}

输出运行结果如下所示:

原始图像

反转处理后的图像

OpenCV4---像素操作(读写像素、修改像素值)相关推荐

  1. canvas像素操作 取色器 写入像素数据 缩放和反锯齿 保存图片

    博客简介 HTML5中的canvas允许我们直接对像素进行操作,我们可以通过ImageData对象操纵像素数据,读取或将数据数组写入该对象中.这里还会介绍如何控制图像使其平滑(反锯齿)以及如何从Can ...

  2. 【opencv学习笔记】005之读像素(获取像素)及写像素(修改像素、空白图像、分割图像)

    目录 一.前言 二.图像像素操作 1.读像素 2.写像素 三.全部代码及结果展示 1.代码 2.运行效果图 一.前言 欠下的总是要还的,继续给大家更新有关于OpenCV的教程,我也不知道能不能保证每天 ...

  3. 《canvas》之第8章 像素操作

    <canvas>之第8章 像素操作 第8章 像素操作 8.1 像素操作简介 8.1.1 getImageData()方法 8.1.2 putImageData()方法 8.1.3 getI ...

  4. 【C++ Opencv】读写灰度图像,RGB图像的某个像素、修改像素值、图像取反(源码+API)

    1. 读写像素 (1)读一个灰度图像的某点像素值 Scalar intensity=img.at<uchar>(y,x); 或者Scalar intensity =img.at<uc ...

  5. OpenCV 读写图像、读写像素、修改像素值(案例:图像反处理)

    文章目录 读写图像 1. `imread` 可以指定加载为灰度或者RGB图像. 2. `imwrite` 保存图像文件,类型由扩展名决定. 读写像素 读一个GRAY像素点的像素值(CV_8UC1) 读 ...

  6. OpenCV图像处理学习四,像素的读写操作和图像反差函数操作

    一.读写图像 imread 可以指定加载为灰度或者RGB图像 Imwrite 保存图像文件,类型由扩展名决定 二.读写像素 读一个GRAY(灰度图)像素点的像素值(CV_8UC1) Scalar in ...

  7. android都图片mat_计算机视觉 OpenCV Android | Mat像素操作(图像像素的读写、均值方差、算术、逻辑等运算、权重叠加、归一化等操作)...

    本文目录 1. 像素读写 2. 图像通道与均值方差计算 3. 算术操作与调整图像的亮度和对比度 4. 基于权重的图像叠加 5. Mat的其他各种像素操作 1. 像素读写 Mat作为图像容器,其数据部分 ...

  8. OpenCV中确定像素位置及获取、修改像素BGR值讲解及演示(Python实现 附源码)

    需要源码和图片集请点赞关注收藏后评论区留言~~~ 像素是图像的最小单位.每一幅图像都是由M行N列的像素组成的,其中每一个像素都存储一个像素值.以灰度图像为例,计算机通常把灰度图像的像素处理为256个灰 ...

  9. Python+OpenCV 图像处理系列(4)—— 图像像素的读写、算术运算、逻辑运算及像素的统计

    1. 像素的读写 可以根据像素的行和列的坐标获取它的像素值.对 BGR 图像而言,返回值为 B,G,R 的值. img.shape 可以获取图像的形状.它的返回值是一个包含行数 h,列数 w,通道数 ...

最新文章

  1. css海浪动画代码,不行一行代码,纯css实现海浪动态效果!
  2. TalkingData:2014年移动打车应用行业报告
  3. 关于jQuery中自定义函数的操作
  4. Qt Creator连接Android设备
  5. Spring中任务调度cronExpression配置说明
  6. mac系统及xcode使用的SVN客户端安装升级
  7. python函数的封装调用_Python封装一个函数来打印到变量
  8. 用Python制作酷炫词云图,原来这么简单!
  9. 利用继承和组合实现软件复用
  10. angular2学习笔记之服务和http
  11. python匿名函数的使用介绍
  12. 静态代理,cglib动态代理,jdk动态代理区别以及流程详解
  13. 微信小程序商城搭建小程序服装购物商城+后台
  14. 近几年微软笔试题汇总分类解析
  15. 从鹿晗关晓彤恋情事件看运维的节假日准备工作
  16. python自动华 (十八)
  17. 400 (Bad Request)错误的解决方法
  18. python 安装 SimpleITK 和 pydicom
  19. Taro跨端开发探索19——商城小程序确认订单页面开发
  20. 数据分析基础 - 统计学

热门文章

  1. python安装教程(介绍pip命令的简单使用),使用介质3.9.0
  2. android7.0清除缓存,iPhone7如何清理应用缓存 iphone7清理应用缓存教程
  3. 公需科目必须学吗_执业药师的公需科目,必须学吗?如何学?
  4. 笔记- 权限管理,授予grant、撤销revoke权限
  5. 秦九韶算法计算多项式
  6. 计算机网络习题:第二单元
  7. EOS内存RAM买卖详解
  8. 产品评测 --- 雷神911系列 拆机视频/图解教学 [ 教程 ]
  9. 分时问候(Java实现)
  10. odoo登录后显示空白页