赞
踩
读一个GRAY像素点的像素值(CV_8UC1) Scalar intensity = img.at(y, x); 或者 Scalar intensity = img.at(Point(x, y));
读一个RGB像素点的像素值 Vec3f intensity = img.at(y, x); float blue = intensity.val[0]; float green = intensity.val[1]; float red =
intensity.val[2];
灰度图像 img.at(y, x) = 128;
RGB三通道图像 img.at(y,x)[0]=128; // blue img.at(y,x)[1]=128; // green img.at(y,x)[2]=128; // red
空白图像赋值 img = Scalar(0);
ROI选择 Rect r(10, 10, 100, 100); Mat smallImg = img®;
- Vec3b对应三通道的顺序是blue、green、red的uchar类型数据。
- Vec3f对应三通道的float类型数据
- 把CV_8UC1转换到CV32F1实现如: src.convertTo(dst, CV_32F);
可以用增强图像加钱图像的辨析度
#include <iostream> #include <opencv2/opencv.hpp> using namespace std; using namespace cv; int main() { Mat src = imread("test.jpg");//读取图片 if (src.empty()) { cout << "could not load img..."; return -1; } namedWindow("test");//设置窗口名称 imshow("test", src); //灰度图像反转 Mat gray_image; cvtColor(src, gray_image, COLOR_BGR2GRAY);// 转换为灰度图 namedWindow("invert gray"); imshow("invert gray", gray_image); int width = gray_image.cols;//获取图像的宽高 int high = gray_image.rows; for (int i = 0; i < high; i++) { for (int j = 0; j < width; j++) { int gray = gray_image.at<uchar>(i, j);//获取行列坐标点 gray_image.at<uchar>(i, j) = 255 - gray;//图像反转 } } namedWindow("invert gray"); imshow("invert gray", gray_image); waitKey(0); return 0; }
#include <iostream> #include <opencv2/opencv.hpp> using namespace std; using namespace cv; int main() { Mat src = imread("test.jpg");//读取图片 if (src.empty()) { cout << "could not load img..."; return -1; } namedWindow("test");//设置窗口名称 imshow("test", src); //灰度图像反转 Mat gray_image; cvtColor(src, gray_image, COLOR_BGR2GRAY);// 转换为灰度图 //namedWindow("invert gray"); //imshow("invert gray", gray_image); int width = gray_image.cols;//获取图像的宽高 int high = gray_image.rows; int nc = src.channels();//获取通道值 Mat dst; dst.create(src.size(), src.type()); for (int row = 0; row < high; row++) { for (int col = 0; col < width; col++) { if (nc == 1)//单通道 { int gray = gray_image.at<uchar>(row, col);//获取行列坐标点 gray_image.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] = b; dst.at<Vec3b>(row, col)[1] = g; dst.at<Vec3b>(row, col)[2] = r;//调整bgr参数获取想要的效果 gray_image.at<uchar>(row, col) = min(r, min(b, g));//获取rgb的最小值 } } } //namedWindow("invert gray"); //imshow("invert gray", gray_image); imshow("三色通道", dst); waitKey(0); return 0; }
#include <iostream> #include <opencv2/opencv.hpp> using namespace std; using namespace cv; int main() { Mat src = imread("test.jpg");//读取图片 if (src.empty()) { cout << "could not load img..."; return -1; } namedWindow("test");//设置窗口名称 imshow("test", src); //灰度图像反转 Mat gray_image; cvtColor(src, gray_image, COLOR_BGR2GRAY);// 转换为灰度图 //namedWindow("invert gray"); //imshow("invert gray", gray_image); int width = gray_image.cols;//获取图像的宽高 int high = gray_image.rows; int nc = src.channels();//获取通道值 Mat dst; dst.create(src.size(), src.type()); //for (int row = 0; row < high; row++) //{ // for (int col = 0; col < width; col++) // { // if (nc == 1)//单通道 // { // int gray = gray_image.at<uchar>(row, col);//获取行列坐标点 // gray_image.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] = b; // dst.at<Vec3b>(row, col)[1] = g; // dst.at<Vec3b>(row, col)[2] = 0;//调整bgr参数获取想要的效果 // gray_image.at<uchar>(row, col) = min(r, min(b, g));//获取rgb的最小值 // } // // } //} bitwise_not(src, dst); //namedWindow("invert gray"); //imshow("invert gray", gray_image); imshow("三色通道", dst); waitKey(0); return 0; }
#include <iostream> #include <opencv2/opencv.hpp> using namespace std; using namespace cv; int main() { Mat src = imread("test.jpg");//读取图片 if (src.empty()) { cout << "could not load img..."; return -1; } namedWindow("test");//设置窗口名称 imshow("test", src); //灰度图像反转 Mat gray_image; cvtColor(src, gray_image, COLOR_BGR2GRAY);// 转换为灰度图 //namedWindow("invert gray"); //imshow("invert gray", gray_image); int width = gray_image.cols;//获取图像的宽高 int high = gray_image.rows; int nc = src.channels();//获取通道值 Mat dst; dst.create(src.size(), src.type()); for (int row = 0; row < high; row++) { for (int col = 0; col < width; col++) { if (nc == 1)//单通道 { int gray = gray_image.at<uchar>(row, col);//获取行列坐标点 gray_image.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;//调整bgr参数获取想要的效果 //gray_image.at<uchar>(row, col) = min(r, min(b, g));//获取rgb的最小值 } } } //bitwise_not(src, dst); //namedWindow("invert gray"); //imshow("invert gray", gray_image); imshow("三色通道", dst); waitKey(0); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。