矩阵的掩膜操作
2019-03-06 本文已影响0人
榆杨丶
#include<opencv2\opencv.hpp>
#include<iostream>
#include<math.h>
using namespace cv;
int main(int argc,char** argv)
{
Mat src=imread("C:/Users/HU/Desktop/82dcdd06.jpg");
if(src.empty())
{
printf("could't load image...\n");
return -1;
}
namedWindow("opencv setup demo",CV_WINDOW_AUTOSIZE);//创建一个名为opencv setup demo 自动调整窗口大小的窗口
imshow("opencv setup demo",src);
/*int cols=(src.cols-1)*src.channels();
int offsetx=src.channels();
int rows=src.rows;
Mat dst=Mat::zeros(src.size(),src.type());
for(int row=1;row<(rows-1);row++)
{
const uchar* current= src.ptr<uchar>(row);
const uchar* previous= src.ptr<uchar>(row-1);
const uchar* next= src.ptr<uchar>(row+1);
uchar* output=dst.ptr<uchar>(row);
for(int col=offsetx;col<cols;col++)
{
output[col]=saturate_cast<uchar>(5*current[col]-(current[col-offsetx]+current[col+offsetx]+previous[col]+next[col]));
}
}
waitKey(0);*/
//修改图像
Mat dst=Mat::zeros(src.size(),src.type());
Mat kern = (Mat_<char>(3, 3) << 0, -1, 0,-1, 5, -1,0, -1, 0);
filter2D(src, dst, src.depth(), kern); //另一种掩膜处理方式
namedWindow("opencv",CV_WINDOW_AUTOSIZE);
imshow("opencv",dst);
waitKey(0);
//保存图像
return 0;
}