zoukankan      html  css  js  c++  java
  • (16)提取水平和垂直线

    提取水平和垂直线,就是应用之前学的开 和关的操作来实现。

    具体知识点,看这个博客:https://blog.csdn.net/qq_25343557/article/details/78691828

    ================================================

    下面是实现提取竖直线

    =============================================

     1 #include<iostream>
     2 #include<opencv.hpp>
     3 
     4 using namespace std;
     5 using namespace cv;
     6 void GetLine();
     7 int main()
     8 {
     9     GetLine();
    10 
    11 
    12     waitKey(0);
    13     return 1;
    14 }
    15 void GetLine() {
    16     Mat src, grayImg, binImg, dest;
    17     //①、读取图片
    18     src = imread("C:\Users\32829\Desktop\qq.png");
    19     if (!src.data) {
    20         cout << "图片打开失败!" << endl;
    21         return;
    22     }
    23     namedWindow("原图像", CV_WINDOW_AUTOSIZE);
    24     imshow("原图像", src);
    25     //②、转为灰度图
    26     cvtColor(src, grayImg, CV_RGB2GRAY);
    27     namedWindow("灰度图", CV_WINDOW_AUTOSIZE);
    28     imshow("灰度图", grayImg);
    29     //③、转为二值图像
    30     adaptiveThreshold(~grayImg, binImg, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 15, -2);
    31     namedWindow("二值图像", CV_WINDOW_AUTOSIZE);
    32     imshow("二值图像", binImg);
    33     //④、定义结构元素
    34     Mat kernel = getStructuringElement(MORPH_RECT, Size(1, 20));
    35     //⑤、开操作
    36     morphologyEx(binImg, dest, MORPH_OPEN, kernel);
    37     namedWindow("最终结果", CV_WINDOW_AUTOSIZE);
    38     imshow("最终结果", ~dest);
    39 
    40     cvWaitKey();
    41 }

    最后结果展示:

    =========================================================

    =========================================

    要是获得横线,就直接修改Size里面的值就行,比如变为(20,1),我理解的kernel就是每次从上到下,从左到右移动的小的元素值,那么这个Size就是限定你移动的小的元素值的形状和大小。

    ========================================

     1 #include<iostream>
     2 #include<opencv.hpp>
     3 
     4 using namespace std;
     5 using namespace cv;
     6 void GetLine();
     7 int main()
     8 {
     9     GetLine();
    10 
    11 
    12     waitKey(0);
    13     return 1;
    14 }
    15 void GetLine() {
    16     Mat src, grayImg, binImg, dest;
    17     //①、读取图片
    18     src = imread("C:\Users\32829\Desktop\qq.png");
    19     if (!src.data) {
    20         cout << "图片打开失败!" << endl;
    21         return;
    22     }
    23     namedWindow("原图像", CV_WINDOW_AUTOSIZE);
    24     imshow("原图像", src);
    25     //②、转为灰度图
    26     cvtColor(src, grayImg, CV_RGB2GRAY);
    27     namedWindow("灰度图", CV_WINDOW_AUTOSIZE);
    28     imshow("灰度图", grayImg);
    29     //③、转为二值图像
    30     adaptiveThreshold(~grayImg, binImg, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 15, -2);
    31     namedWindow("二值图像", CV_WINDOW_AUTOSIZE);
    32     imshow("二值图像", binImg);
    33     //④、定义结构元素
    34     Mat kernel = getStructuringElement(MORPH_RECT, Size(20, 1));
    35     //⑤、开操作
    36     morphologyEx(binImg, dest, MORPH_OPEN, kernel);
    37     namedWindow("最终结果", CV_WINDOW_AUTOSIZE);
    38     imshow("最终结果", ~dest);
    39 
    40     cvWaitKey();
    41 }

    =================================================================

    下面是结果展示:

    ===========================================================

  • 相关阅读:
    JQuery扩展方法
    RabbitMQ消息机制广播分发
    RabbitMQ消息机制单人分发
    对函数的参数求和
    ajax jsonp
    绑定函数bind()
    this 指向
    DOM兼容
    命名空间 namespace
    开始看编写高质量的代码
  • 原文地址:https://www.cnblogs.com/xiaoyoucai/p/10194253.html
Copyright © 2011-2022 走看看