#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
Mat img=imread("C:/Users/Xuhaoze/Pictures/photo/x7b891op.png");
Mat white = imread("C:/Users/Xuhaoze/Pictures/photo/123.png");
Mat black = imread("C:/Users/Xuhaoze/Pictures/photo/234.png");
Mat Min, Max;
min(img,white,Min);//比较两个矩阵中值的大小,将较小的矩阵的值返回到Max中
max(img,black,Max);//比较两个矩阵中值的大小,将较大的矩阵的值返回到Max中
Mat gray,gray_black;
cvtColor(img,gray,COLOR_BGR2GRAY);//将gray设置为灰色单通道图像
cvtColor(black,gray_black,COLOR_BGR2GRAY);
double minVal,maxVal;
Point minLoc,maxLoc;
minMaxLoc(gray,&minVal,&maxVal,&minLoc,&maxLoc);//查看gray图像的最大值最小值以及x,y的位置,最后一个参数为掩码矩阵,排除掩码矩阵中的值
return 0;
}
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("C:/Users/Xuhaoze/Pictures/photo/x7b891op.png");
Mat mark = imread("C:/Users/Xuhaoze/Pictures/photo/123.png");
Mat result,img_inv;
bitwise_and(img,mark,result);//或运算,像素值相加
cvtColor(mark,mark,COLOR_BGR2GRAY);//改成单通道的灰度图像
bitwise_not(img,img_inv,mark);
Mat mark_black = imread("C:/Users/Xuhaoze/Pictures/photo/234.png");
min(img,mark_black,img);
img = img + img_inv;//Mat类的加运算
return 0;
}
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
uchar lutFirst[256];//分层映射
for (int i = 0; i < 256; i++)
{
if (i <= 100)
lutFirst[i] = 0;
if (i > 100 && i <= 200)
lutFirst[i] = 100;
if (i > 200)
lutFirst[i] = 255;
}
Mat lutOne(1, 256, CV_8UC1, lutFirst);
uchar lutSecond[256];
for (int i = 0; i < 256; i++)
{
if (i <= 100)
lutSecond[i] = 0;
if (i > 100 && i <= 150)
lutSecond[i] = 100;
if (i > 150 && i <= 200)
lutSecond[i] = 150;
if (i > 200)
lutSecond[i] = 255;
}
Mat lutTwo(1, 256, CV_8UC1, lutSecond);
uchar lutThird[256];
for (int i = 0; i < 256; i++)
{
if (i <= 100)
lutThird[i] = 100;
if (i > 100 && i <= 200)
lutThird[i] = 200;
if (i > 200)
lutThird[i] = 255;
}
Mat lutThree(1, 256, CV_8UC1, lutThird);//查找表的表是一个256元素的表
vector<Mat> mergeMats;//向量数字
mergeMats.push_back(lutOne);
mergeMats.push_back(lutTwo);
mergeMats.push_back(lutThree);
Mat LutTree;
merge(mergeMats,LutTree);//将向量中的三个单通道图像合成为一个多通道图像
Mat img = imread("C:/Users/Xuhaoze/Pictures/photo/x7b891op.png");
if (img.empty())
{
cout << "打开图像错误" << endl;
return -1;
}
Mat gray, out0, out1, out2;
cvtColor(img,gray,COLOR_BGR2GRAY);
LUT(gray, lutOne, out0);
//将灰度图像查找表,小于表中的元素时等于0,大于或等于时为表中的元素值
LUT(img, lutOne, out1);
LUT(img, LutTree, out2);
imshow("out0", out0);
imshow("out1", out1);
imshow("out2", out2);
waitKey(0);
return 0;
}