opencv4 学习 08 Hit-and-Miss transform(未完,待续~)

原理很简单,使用很复杂,不知道用在哪些场景,后面慢慢研究

#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc, char* argv[])
{
    Mat input_image = (Mat_<uchar>(8, 8) <<
           0, 0, 0, 0, 0, 0, 0, 0,
           0, 255, 255, 255, 0, 0, 0, 255,
           0, 255, 255, 255, 0, 0, 0, 0,
           0, 255, 255, 255, 0, 255, 0, 0,
           0, 0, 255, 0, 0, 0, 0, 0,
           0, 0, 255, 0, 0, 255, 255, 0,
           0, 255, 0, 255, 0, 0, 255, 0,
           0, 255, 255, 255, 0, 0, 0, 0);
       Mat kernel = (Mat_<int>(3, 3) <<
           0, 1, 0,
           1, -1, 1,
           0, 1, 0);
       Mat output_image;
       morphologyEx(input_image, output_image, MORPH_HITMISS, kernel);
       const int rate = 50;
       kernel = (kernel + 1) * 127;
       kernel.convertTo(kernel, CV_8U);
       resize(kernel, kernel, Size(), rate, rate, INTER_NEAREST);
       imshow("kernel", kernel);
       moveWindow("kernel", 0, 0);
       resize(input_image, input_image, Size(), rate, rate, INTER_NEAREST);
       imshow("Original", input_image);
       moveWindow("Original", 0, 200);
       resize(output_image, output_image, Size(), rate, rate, INTER_NEAREST);
       imshow("Hit or Miss", output_image);
       moveWindow("Hit or Miss", 500, 200);
       waitKey(0);
       return 0;

    waitKey(0);
    return 0;
}

 

参考:

https://docs.opencv.org/3.4/db/d06/tutorial_hitOrMiss.html

posted @ 2020-08-11 14:41  blackx  阅读(166)  评论(0编辑  收藏  举报