imread 可以指定加载灰度图像或者是RGB图像
imwrite 保存图像文件,类型由扩展名决定
1. 读写一个灰度图像(GRAY)像素点的像素值 :Scalar intensity = Mat.at<uchar>(y,x)或者Scalar intensity = Mat.at<uchar>(Point(x,y))2. 都一个RGB像素点的像素值:Vec3f intensity = Mat.at<Vec3f>(y,x)float blue = intensity.val[0] //获得蓝色通道的像素值float green = intensity.val[1] //获得蓝色通道的像素值float red = intensity.val[2] //获得蓝色通道的像素值整型:int b = srcImage.at<Vec3b>(row, col)[0]; //获取像素值b int g = srcImage.at<Vec3b>(row, col)[1]; //获取像素值gint r = srcImage.at<Vec3b>(row, col)[2]; //获取像素值r
int gray = gray_src.at<uchar>(row,col); //获取像素值
gray_src.at<uchar>(row,col) = 255-gray; //像素值取反赋值
#include<opencv2/opencv.hpp>
#include<iostream>using namespace cv;int main(int argc, char** argv) {Mat srcImage = imread("E:/image/6.jpg");Mat gray_src;if (!srcImage.data) {printf("没有找到图片");return -1;}namedWindow("input image",WINDOW_AUTOSIZE);imshow("input image", srcImage);cvtColor(srcImage, gray_src, COLOR_BGR2GRAY);namedWindow("input gray", WINDOW_AUTOSIZE);imshow("input gray", gray_src);int heigth = ws;int width = ls;for (int row = 0; row < heigth; row++) {for (int col = 0; col < width; col++) {int gray = gray_src.at<uchar>(row,col); //获取像素值gray_src.at<uchar>(row,col) = 255-gray; //像素值取反赋值}}namedWindow("取反操作",WINDOW_AUTOSIZE);![imshow("取反操作", gray_src);waitKey(0);return 0;
}
效果图:
#include<opencv2/opencv.hpp>
#include<iostream>using namespace cv;int main(int argc, char** argv) {Mat srcImage = imread("E:/image/6.jpg");if (!srcImage.data) {printf("没有找到图片");return -1;}namedWindow("input image",WINDOW_AUTOSIZE);imshow("input image", srcImage);Mat ate(srcImage.size(), pe());int heigth = ws;int width = ls;int nc = srcImage.channels();for (int row = 0; row < heigth; row++) {for (int col = 0; col < width; col++) {if(nc==1){int gray = srcImage.at<uchar>(row, col); //获取像素值dst.at<uchar>(row, col) = 255 - gray; //像素值取反赋值}else if (nc == 3) {int b = srcImage.at<Vec3b>(row, col)[0]; //获取像素值b int g = srcImage.at<Vec3b>(row, col)[1]; //获取像素值gint r = srcImage.at<Vec3b>(row, col)[2]; //获取像素值rdst.at<Vec3b>(row, col)[0] = 255 - b;dst.at<Vec3b>(row, col)[1] = 255 - g;dst.at<Vec3b>(row, col)[2] = 255 - r;}}}namedWindow("取反操作",WINDOW_AUTOSIZE);imshow("取反操作", dst);waitKey(0);return 0;
}
效果图:
#include<opencv2/opencv.hpp>
#include<iostream>using namespace cv;int main(int argc, char** argv) {Mat srcImage = imread("E:/image/6.jpg");if (!srcImage.data) {printf("没有找到图片");return -1;}namedWindow("input image",WINDOW_AUTOSIZE);imshow("input image", srcImage);Mat ate(srcImage.size(), pe());bitwise_not(srcImage, dst);namedWindow("取反操作",WINDOW_AUTOSIZE);imshow("取反操作", dst);waitKey(0);return 0;
}
效果图:
本文发布于:2024-02-01 18:31:49,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170678350938620.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |