opencv图像处理03-像素的读写操作
2018-07-28 16:56
489 查看
1. 像素的读写操作:
l读一个GRAY像素点的像素值(CV_8UC1)
Scalar intensity = img.at<uchar>(y, x);
l读一个RGB像素点的像素值
Vec3f intensity = img.at<Vec3f>(y, x);
float blue = intensity.val[0];
float green = intensity.val[1];
float red = intensity.val[2];
2.简单案例
将图像的每一个像素值进行反转
将图像所有像素的某个通道置0
自己动手做灰度图
[code]#include <opencv2/opencv.hpp> #include <iostream> #include <math.h> using namespace std; using namespace cv; int main() { Mat src = imread("E:/7.png"); if (src.empty()) { cout << "load failed" << endl; } Mat gray_src; cvtColor(src, gray_src, CV_BGR2GRAY); int height = gray_src.rows; int weight = gray_src.cols; for (int row = 0; row < height; row++) { for (int col = 0; col < weight; col++) { int gray = gray_src.at<uchar>(row, col); gray_src.at<uchar>(row, col) = 255 - gray; } } namedWindow("gray_src", CV_WINDOW_AUTOSIZE); imshow("gray_src", gray_src); Mat dst; dst.create(src.size(), src.type()); height = dst.rows; weight = dst.cols; int nc = dst.channels(); for (int row = 0; row < height; row++) { for (int col = 0; col < weight; col++) { if (nc == 1) { int gray = gray_src.at<uchar>(row, col); //每个通道的值进行反转 gray_src.at<uchar>(row, col) = 255 - gray; } else if (nc == 3) { int b = src.at<Vec3b>(row, col)[0]; int g = src.at<Vec3b>(row, col)[1]; int r = src.at<Vec3b>(row, col)[2]; //每个通道的值进行反转 dst.at<Vec3b>(row, col)[0] = 255 - b; dst.at<Vec3b>(row, col)[1] = 255 - g; dst.at<Vec3b>(row, col)[2] = 255 - r; dst.at<Vec3b>(row, col)[0] = b; dst.at<Vec3b>(row, col)[1] = g; dst.at<Vec3b>(row, col)[2] = 0; //自己动手做灰度图 gray_src.at<uchar>(row, col) = max(r, max(b,g)); } } } //namedWindow("test2", CV_WINDOW_AUTOSIZE); imshow("dst", dst); imshow("gray_src", gray_src); /*Mat dst2; //该API可以得到上面同样的效果 bitwise_not(src, dst2); namedWindow("test3", CV_WINDOW_AUTOSIZE); imshow("test3", dst2);*/ waitKey(0); return 0; }
阅读更多
相关文章推荐
- Python-OpenCV 处理图像(三):图像像素点操作
- 我的OpenCV学习笔记(三):利用操作像素完成简单的图像处理:加入椒盐噪声、图像翻转、改变对比度、图像锐化
- android中opencv操作图片像素----之图像灰度处理
- OpenCV&图像处理_1:矩阵,以及图像读写操作
- Python-OpenCV 处理图像(三):图像像素点操作
- Python OpenCV处理图像之图像像素点操作
- 图像识别与处理之Opencv——像素值的读写
- Python-OpenCV 处理图像(三):图像像素点操作
- Python-OpenCV 处理图像(二)(三):滤镜和图像运算 图像像素点操作
- opencv 简单图像操作 访问像素
- opencv6.1-imgproc图像处理模块之平滑与形态学操作
- OpenCV关于视频处理的学习(VideoCapture类)-在检测中一些必要的图像操作
- OpenCV 1.x & 2.x 编程简介(矩阵/图像/视频的基本读写操作)
- opencv 图像处理 形态学操作 腐蚀 膨胀 开闭运算 阈值二值化 图像卷积 图像金字塔 Sobel算子 Laplacian 算子 candy边缘检测 霍夫变换 直方图
- OpenCV 编程简介(矩阵/图像/视频的基本读写操作)
- opencv图像处理基本操作
- opencv2.x中32位图像的像素级操作
- OpenCV 图像处理——平滑操作
- opencv学习(2)——图像处理的一些常见操作
- 五.使用OpenCv操作图像上每一个像素点