OpenCVを使ってLenaさんをぼかす。(0007)
OpenCVを使ってLenaさんをぼかす。 エッジはごかんべんを!!
//画面をだすよ void display(cv::Mat image) { //名前をつける std::string windowName = "windowName"; cv::namedWindow(windowName); //画面位置固定 cv::moveWindow(windowName, 100, 100); //画面出た!! cv::imshow(windowName, image); //なにかキーをおして~ cv::waitKey(0); //整理整頓 cv::destroyWindow(windowName); } // // ここから // int main(int argc, char** argv) { //lenaさん登場!! cv::Mat lena = cv::imread("lena.jpg"); //lenaさん白黒レトロ cv::cvtColor(lena, lena, CV_RGB2GRAY); int cols = lena.cols; int rows = lena.rows; //lenaさんと同じサイズの画像 cv::Mat image = cv::Mat::zeros(cols, rows, CV_8UC1); uchar up,down,left,right; uchar upleft,downleft; uchar upright,downright; uchar anchor; for (int j = 1; j < rows - 1; j++) { for (int i = 1; i < cols - 1; i++) { up = lena.at<uchar>(j - 1, i); down = lena.at<uchar>(j + 1, i); left = lena.at<uchar>(j, i - 1); right = lena.at<uchar>(j, i + 1); upleft = lena.at<uchar>(j - 1, i-1); upright = lena.at<uchar>(j - 1, i+1); downleft = lena.at<uchar>(j + 1, i-1); downright = lena.at<uchar>(j + 1, i+1); anchor = lena.at<uchar>(j, i); image.at<uchar>(j, i) = cv::saturate_cast<uchar>( anchor/9 +up/9 +down/9 +left/9 +right/9 +upleft/9 +upright/9 +downleft/9 +downright/9 ); } } //画面に出して!! display(image); }
白黒
ぼかし