OpenCV学习1 Mat图像的常见读写方式
来源:互联网 发布:linux 查看ssh 编辑:程序博客网 时间:2024/06/07 04:58
方式一:at函数的读写
对于一幅图像可以使用imread()读取成mat类型
Mat Image = imread("lena.bmp");
对三通道的图像进行读写操作
for (int i = 0; i < Image.rows; i++){for (int j = 0; j < Image.cols; j++){ //Image.at<Vec3b>(i, j)[0] = (i) % 255;//Image.at<Vec3b>(i, j)[1] = (j) % 255;//Image.at<Vec3b>(i, j)[2] = 0;Vec3b pixel;pixel[0] = (i) % 255;pixel[1] = (j) % 255;pixel[2] = 0;Image.at<Vec3b>(i, j) = pixel;}}
能得到以下的图像
三通道图像中 pixel[0]表示的是Blue通道,pixel[1]表示的Green通道,而pixel[2]表示的是Red通道,因此上面程序令红色通道为零了,
所以显示的图像没有红色分量。
如果是图像是一通道那么采用以下代码
if (Image.channels() == 1){for (int i = 0; i < Image.rows ; ++i){for (int j = 0; i < Image.cols; ++j){Image.at<uchar>(i, j) = (i + j) % 255;}}}
方式二:指针方式读写
if(Image.channels() == 1){for (int i = 0; i < Image.rows; i++){uchar *p = Image.ptr<uchar>(i);for (int j = 0; j < Image.cols; j++){p[j] = (i + j) % 255;}}}该段代码用的是指针的方式读写操作一个一通道的图像,得到的图像结果为
方式三:迭代器方式读写
MatIterator_<Vec3b> colorit, colorend;for (colorit = Image.begin<Vec3b>(), colorend = Image.end<Vec3b>(); colorit != colorend; ++colorit){(*colorit)[0] = rand() % 255;(*colorit)[1] = rand() % 255;(*colorit)[2] = rand() % 255;}
该段代码读写一个三通道的图像,可以看到迭代器方式不用遍历行和列了,利用了随机函数得到的肯定是一个随机像素图像
当然还有查找表方式,利用单位长度 的读取等方式。
阅读全文
0 0
- OpenCV学习1 Mat图像的常见读写方式
- OpenCV图像读写方式
- OpenCV,多种Mat图像元素访问方式的速度对比
- opencv Mat - 图像的容器
- OpenCV Mat的常见属性
- opencv学习笔记之Mat,图像的新容器
- OpenCV学习笔记——Mat,图像的新容器
- 【Opencv学习(三)】获取Mat图像的ROI区域
- OpenCV学习笔记——Mat,图像的新容器
- 图像识别入门(opencv入门)Mat类的学习
- C++读写txt文件方式以及基于opencv的Mat数据类型读写txt文件类型
- C++读写txt文件方式以及基于opencv的Mat数据类型读写txt文件
- 学习笔记之OpenCV(1):Mat图像扫描
- 学习opencv(3)---Mat - 基本图像容器
- OpenCV学习:Mat - 基本图像器
- 【OPENCV学习】图像输入输出读写
- OpenCV中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage
- C++ Mat图像到二进制文件的读写
- python中的os.listdir()方法
- java创建线程的方式
- yum 网络库服务器基础搭建
- 计算机网络最后一次作业
- 第14周项目3- B-树的基本操作
- OpenCV学习1 Mat图像的常见读写方式
- matlab---之params.variable
- HDOJ 2562 奇偶位互换(水)
- 1.40 yum安装软件的时候,记不全包名,如何查找到完整的包名
- android平台使用Opengl实现点、线、三角形的绘制
- pokemon go 和 虚拟gps
- 13周:2.请编程设计一个登录界面,要求输入账号密码(不考虑事件)
- ubuntu扩展屏幕
- python 列表排序方法sort、sorted技巧篇