Opencv图像的遍历_at_ptr
2016-05-16 16:20
375 查看
opencv_at_ptr 图像的遍历
/article/5069448.html
1、at(i,j)
对图像降色彩,因为256*256*256实在太多了,在图像颜色聚类或彩色直方图时,
我们需要用一些代表性的颜色代替丰富的色彩空间,我们的思路是将每个通道的256种颜色用64种代替,
即将原来256种颜色划分64个颜色段,每个颜色段取中间的颜色值作为代表色。
image.at(i,j):取出灰度图像中i行j列的点。
image.at(i,j)[k]:取出彩色图像中i行j列第k通道的颜色点。
其中uchar,Vec3b都是图像像素值的类型
2用指针来遍历图像
上图对原图像进行了修改,采用指针的形式可以保留原图,制作原图的副本
Mat 通过.ptr<>函数得到一行的指针,并用[]操作符访问某一列的像素值
第i行数据的指针:image.ptr(i)。
并用[]操作符访问某一列的像素值
/article/5069448.html
1、at(i,j)
对图像降色彩,因为256*256*256实在太多了,在图像颜色聚类或彩色直方图时,
我们需要用一些代表性的颜色代替丰富的色彩空间,我们的思路是将每个通道的256种颜色用64种代替,
即将原来256种颜色划分64个颜色段,每个颜色段取中间的颜色值作为代表色。
void colorReudce(Mat& image,int div) { for(int i=0; i<image.rows;i++) { for(int j=0;j<image.cols;j++) { image.at<Vec3b>(i,j)[0]= image.at<Vec3b>(i,j)[0]/div*div+div/2; image.at<Vec3b>(i,j)[1]= image.at<Vec3b>(i,j)[1]/div*div+div/2; image.at<Vec3b>(i,j)[2]= image.at<Vec3b>(i,j)[2]/div*div+div/2; } } }
image.at(i,j):取出灰度图像中i行j列的点。
image.at(i,j)[k]:取出彩色图像中i行j列第k通道的颜色点。
其中uchar,Vec3b都是图像像素值的类型
2用指针来遍历图像
上图对原图像进行了修改,采用指针的形式可以保留原图,制作原图的副本
void colorReduce(Mat& image,Mat& outImage,int div) { outImage.create(image.size(),image.type()); const unchar* indata; unchar* outdata; int row=image.rows; int col=image.cols*image.channels(); for(int i=0;i<row;i++) { indata=image.ptr<uchar>(i); outdata=outImage.ptr<uchar>(i); for(int j=0;j<col;j++) { outdata[j]=indata[i]/div*div+div/2; } } }
Mat 通过.ptr<>函数得到一行的指针,并用[]操作符访问某一列的像素值
第i行数据的指针:image.ptr(i)。
并用[]操作符访问某一列的像素值
相关文章推荐
- 利用Azure Automation实现云端自动化运维(3)
- lvs+keepalived+nginx几种模式的比较
- 利用Azure Automation实现云端自动化运维(1)
- 利用Azure Automation实现云端自动化运维(2)
- linux mysql 双主复制配置文件my.cnf
- 值得推荐的算法学习网站
- 利用Azure Automation实现云端自动化运维(4)
- 电压转电流op
- nginx常用命令和配置文件
- window 上操作linux ----SSHService
- linux安全---iptables防火墙
- docker相关文章
- tomcat6源码的启动和部署工程备注
- 查看和修改shell
- Shell脚本 使用sed流编辑器一键修改CentOS网卡IP地址
- Linux下多线程下载工具 - Axel
- shell将分号替换成空格
- linux常用命令
- part1:9-windows与Linux文件共享
- 初涉Linux(鸟哥的私房菜)