三天学会opencv(四)——图像操作

简介: 三天学会opencv(四)——图像操作

图像操作


主要内容


  1. 读写图像
  2. 读写像素
  3. 修改像素值

读写图像


imread 可以指定加载为灰度或者RGB图像
Imwrite 保存图像文件,类型由扩展名决定

imread函数的功能是加载一张图像,并将其存储至一个Mat类型的对象中。第一个参数为图像文件名称,可以是相对路径,也可以是绝对路径。

第二个参数就是加载图像时,读入的类型。


imwrite()函数的功能是将图像保存到指定的路径下。参数有两个。第一个是存储路径,第二个是待存储的Mat对象。这个函数比较简单没什么好解释的。

读写像素


读一个GRAY像素点的像素值(CV_8UC1)

Scalar intensity = img.at<uchar>(y, x);

或者下面这个写法

Scalar intensity = img.at<uchar>(Point(x, y));

读一个RGB像素点的像素值

Vec3f intensity = img.at<Vec3f>(y, x); 
float blue = intensity.val[0]; 
float green = intensity.val[1]; 
float red = intensity.val[2];

Vec3f是一个可以装取三个数的类型容器,存储一个点的像素值,按照bgr的顺序存放。

修改像素值


灰度图像

将x,y这个位置的像素点的值修改为128

img.at<uchar>(y, x) = 128;

RGB三通道图像

将x,y这个位置的像素点的值的修改为128,128,128。这个顺序是BGR顺序。

img.at<Vec3b>(y,x)[0]=128; // blue
img.at<Vec3b>(y,x)[1]=128; // green
img.at<Vec3b>(y,x)[2]=128; // red

空白图像赋值

空白图。。。。。这个怎么解释

img = Scalar(0);

ROI选择

ROI选择的参数很简单,就是左上角的坐标(前两个参数),后面的两个就是你想提取的ROI的宽和高是多少就写多少。

Rect r(10, 10, 100, 100); 
Mat smallImg = img(r);

Vec3B和Vec3F


Vec3b对应三通道的顺序是blue、green、red的uchar类型数据。
Vec3f对应三通道的float类型数据
把CV_8UC1转换到CV32F1实现如下:
src.convertTo(dst, CV_32F);

相关文章
|
14天前
|
计算机视觉 Python
轻松掌握opencv的8种图像变换
轻松掌握opencv的8种图像变换
|
15天前
|
算法 计算机视觉
【OpenCV】- 图像修复
【OpenCV】- 图像修复
|
15天前
|
Serverless 计算机视觉
【OpenCV】-图像的矩
【OpenCV】-图像的矩
|
15天前
|
编解码 物联网 计算机视觉
【OpenCV】—图像金子塔与图片尺寸缩放
【OpenCV】—图像金子塔与图片尺寸缩放
|
15天前
|
前端开发 计算机视觉 C++
【OpenCV】—分离颜色通道、多通道图像混合
【OpenCV】—分离颜色通道、多通道图像混合
|
15天前
|
API 计算机视觉
【OpenCV】—图像对比度、亮度值调整
【OpenCV】—图像对比度、亮度值调整
|
15天前
|
计算机视觉 索引
【OpenCV】—ROI区域图像叠加&图像混合
【OpenCV】—ROI区域图像叠加&图像混合
|
15天前
|
存储 算法 C语言
OpenCV—访问图像中的像素
OpenCV—访问图像中的像素
|
1月前
|
编解码 计算机视觉 Python
opencv 图像金字塔(python)
opencv 图像金字塔(python)
|
1月前
|
边缘计算 算法 计算机视觉
opencv 图像梯度(python)
opencv 图像梯度(python)