OpenCV(VC++)プログラミング(10/13) 近傍画素を使った画像処理プログラミング

Описание к видео OpenCV(VC++)プログラミング(10/13) 近傍画素を使った画像処理プログラミング

WindowsのVisual C++を利用したOpenCVプログラミング講習


#if _DEBUG
#pragma comment(lib, "opencv_world430d.lib")
#else
#pragma comment(lib, "opencv_world430.lib")
#endif

#include <iostream>
using namespace std;

#include <opencv2/opencv.hpp>
using namespace cv;

int main()
{
Mat input = imread("grayscale.jpg", IMREAD_GRAYSCALE);
if (!input.data) {
cout << "cannot open input file" << endl; return 1;
}

Mat output = Mat(input.rows, input.cols, CV_8U);
for (int y = 0; y < input.rows; y++) {
for (int x = 0; x < input.cols; x++) {
int num = 0;
double val = 0.0;
for (int yy = y - 1; yy <= y + 1; yy++) {
for (int xx = x - 1; xx <= x + 1; xx++) {
if (xx >= 0 && yy >= 0 && xx < input.cols && yy < input.rows) {
val += (double)input.at<uchar>(yy, xx);
num++;
}
}
}
output.at<uchar>(y, x) = (unsigned char)(val / (double)num);
}
}
imwrite("output.bmp", output);

return 0;
}

Комментарии

Информация по комментариям в разработке