OpenCVを使っ輪郭を書いてみる
輪郭とは~~。となりのピクセルの差が大きいところ。 でこうなる。
//画面をだすよ void display(cv::Mat image) { //まえの記事をみてね } // // ここから // int main(int argc, char** argv) { cv::Mat opencv = cv::imread("OpenCv.png",0); cv::Mat image = cv::Mat::zeros(opencv.rows, opencv.cols, CV_8UC1); uchar up,down,left,right; uchar upleft,downleft; uchar upright,downright; uchar anchor; int cols = opencv.cols; int rows = opencv.rows; 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*-4 +up*1 +down*1 +left*1 +right*1 +upleft*0 +upright*0 +downleft*0 +downright*0 ); } } //画面に出して!! display(image); }
オリジナル画像
輪郭画像