访问彩色像素的理解及疑惑
来源:互联网 发布:济南公交 大数据 编辑:程序博客网 时间:2024/05/22 06:44
在访问图像像素opencv提供了基本的三种方式:
一、指针
二、迭代
三、at()函数
下面就使用at()函数遇到的问题说一说,希望能帮到人,同时也希望有大神给透彻分析一下。
成功例子:
#include <iostream>#include <opencv2/opencv.hpp>using namespace std;using namespace cv;int main(){ //Mat img = imread("Lena.jpg");直接采用imread()函数就会报内存读取错误,没找出来原因。 IplImage *image = cvLoadImage("E:\\···Lena.jpg"); Mat img(image,true); //转换成Mat类型 if (!img.data) { cout<<"Error"; } for (int i=0;i<img.rows;i++) { for (int j=0;j<img.cols;j++) {//彩色图像分为三个通道,每个像素值由三个分量组成 Vec3b pixe; pixe[0] = i%255; pixe[1] = j%55; pixe[2] = 200;//分别设置三个分量的值,并把值存到容器中 img.at<Vec3b>(i,j) = pixe;//此处对每个像素赋值 } } imshow("img",img); waitKey(0); return 0;}
具体的针对单个像素的操作:
#include <iostream>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>using namespace std;using namespace cv;const int num = 300;void salt_pepper(Mat &img){ for (int i=0;i<num;i++) { int x = rand() % 255; int y = rand() % 255; if (img.channels() == 3) { img.at<Vec3b>(x,y)[0] = 255; img.at<Vec3b>(x,y)[1] = 255; img.at<Vec3b>(x,y)[2] = 255; } }}int main(){ Mat img = imread("Lena.jpg"); if (!img.data) { cout<<"error"; } salt_pepper(img); imshow("salt_pepper",img); waitKey(0); return 0;}
0 0
- 访问彩色像素的理解及疑惑
- cookie及session的一点理解及疑惑
- OpenCV两种易于理解的访问像素的方法
- Opencv利用Mat访问像素值(彩色和灰度)
- opencv01-像素的访问
- 彩色直方图各通道像素值统计及可视化
- OpenCV遍历彩色图像、灰度图像的像素值方法
- opencv访问图像像素及简单应用
- Mat数据结构及访问Mat中像素
- 是否用self.访问property的疑惑
- 关于像素的理解问题
- Android像素单位的理解
- 关于C#对象引用疑惑的理解
- FileLock的疑惑和一些理解
- 图像的深度转换,图像提取,像素级访问及时间测量
- 访问像素
- 像素访问
- 新手对COM的认识及疑惑
- Android环境搭建-20151210
- Objective-C 歌词解析
- poj--1300
- 数据标准化的原因及方法
- 打印图形
- 访问彩色像素的理解及疑惑
- android学习笔记——创建自定义控件
- Android 源码解析: 图片加载库Picasso 2 Cache机制
- selenium webdriver2.0实现邮件发送
- js append 含有引号等特殊符号的报错
- Unity学习笔记(3) --- Unity的界面排版:初识GUILayout
- LeetCode 41 First Missing Positive
- ubuntu14.04 64bits操作系统下 qt5.3.0的安装配置(doxygen,astyle),qt卸载
- 大二算法上机学期总结