我们的测试用例
让我们考虑图像对比度增强方法的问题。基本上,我们想对图像的每个像素应用以下公式:
[I(i,j) = 5*I(i,j) - [ I(i-1,j) + I(i+1,j) + I(i,j-1) + I(i,j+1)]]
[\iff I(i,j)*M, \text{where } M = \bordermatrix{ _i\backslash ^j & -1 & 0 & +1 \cr -1 & 0 & -1 & 0 \cr 0 & -1 & 5 & -1 \cr +1 & 0 & -1 & 0 \cr }]
第一种表示法是使用公式,而第二种表示法是第一种表示法的压缩版本,使用掩码。通过将掩码矩阵的中心(大写字母表示为零-零索引)放在要计算的像素上,并将像素值乘以重叠的矩阵值相加来使用掩码。这是一回事,但是在大型矩阵的情况下,后一种符号更容易查看。
法典 C++爪哇岛蟒
您可以从此处下载此源代码,或查看位于 的 OpenCV 源代码库示例目录。samples/cpp/tutorial_code/core/mat_mask_operations/mat_mask_operations.cpp
#include < opencv2/imgcodecs.hpp>
#include < opencv2/highgui.hpp>
#include < opencv2/imgproc.hpp>
#include < iostream>
使用命名空间 std;
使用命名空间 CV;
static void help(char* progName)
{
cout << endl
<< “这个程序展示了如何使用蒙版过滤图像:自己写和”
<< “filter2d 方式。<< endl
<< “用法:” << endl
<< progName << “ [image_path – default lena.jpg] [G – grayscale] ” << endl << endl;
}
无效锐化(const Mat&myImage,Mat&Result);
int main( int argc, char* argv[])
{
帮助(argv[0]);
const char* 文件名 = argc >=2 ?argv[1] : “lena.jpg”;
垫子 src, dst0, dst1;
if (argc >= 3 && !strcmp(“G”, argv[2]))
src = imread( samples::findFile( 文件名 ), IMREAD_GRAYSCALE);
还
src = imread( samples::findFile( 文件名 ), IMREAD_COLOR);
如果 (src.空())
{
cerr << “无法打开图像 [” <<文件名<< “]” << endl;
返回EXIT_FAILURE;
}
namedWindow(“输入”, WINDOW_AUTOSIZE);