欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

opencv檢測直線方法之形態(tài)學(xué)方法

 更新時(shí)間:2018年12月26日 10:45:36   作者:恬夢  
這篇文章主要為大家詳細(xì)介紹了opencv檢測直線方法之形態(tài)學(xué)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

在閱讀文獻(xiàn)中,偶然發(fā)現(xiàn)使用使用形態(tài)學(xué)方法也可以檢測直線,故做實(shí)驗(yàn)并記錄。

使用該方法,需要定義一個(gè)長度為L的結(jié)構(gòu)元素element,其大小應(yīng)足夠大以保留圖像中的字符筆劃,然而又恰好能檢測出圖像中最短的表格線。

定義如下兩個(gè)結(jié)構(gòu)element用以檢測圖中水平、豎直的表格線:

Mat element1 = getStructuringElement(MORPH_RECT, Size(70, 1));// size的width應(yīng)大于圖像中的橫向筆劃

Mat element3 = getStructuringElement(MORPH_RECT, Size(1, 55));//size的height應(yīng)大于圖像中的豎直筆劃

之后分別用以上結(jié)構(gòu)元素對圖像的水平以及豎直方向做閉運(yùn)算以抹去水平或豎直表格線以外的細(xì)節(jié):

morphologyEx(image, imageF1, MORPH_CLOSE, element1);

morphologyEx(image, imageF4, MORPH_CLOSE, element3);

下面附上整體代碼:

#include "core/core.hpp" 
#include "highgui/highgui.hpp" 
#include "imgproc/imgproc.hpp" 
#include <iostream> 
 
using namespace std;
using namespace cv;
 
int main()
{
 Mat image = imread("E:\\x.jpg", 1);
 Mat imageF1, imageF2, imageF3, imageF4, imageF5, imageF6, imageF7;
 cvtColor(image, image, CV_RGB2GRAY);
 namedWindow("原圖");
 imshow("原圖", image);
 
 Mat element1 = getStructuringElement(MORPH_RECT, Size(73, 1)); 
 Mat element3 = getStructuringElement(MORPH_RECT, Size(1, 80));
 
 
 morphologyEx(image, imageF1, MORPH_CLOSE, element1);
 threshold(imageF1, imageF2, 200, 255, CV_THRESH_OTSU | CV_THRESH_BINARY_INV);//自適應(yīng)閾值
 
 morphologyEx(image, imageF4, MORPH_CLOSE, element3);
 threshold(imageF4, imageF5, 200, 255, CV_THRESH_OTSU | CV_THRESH_BINARY_INV);
 
 bitwise_or(imageF2, imageF5, imageF7);
 
 
 namedWindow("F1");
 imshow("F1", imageF1);
 namedWindow("F2");
 imshow("F2", imageF2); 
 namedWindow("F4");
 imshow("F4", imageF4);
 namedWindow("F7");
 imshow("F7", imageF7);
 namedWindow("F5");
 imshow("F5", imageF5);
 
 
 waitKey(0);
 
 return 0;
}

實(shí)驗(yàn)結(jié)果如下:

記錄內(nèi)容如有不妥之處,望指正!

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • c++深入淺出講解堆排序和堆

    c++深入淺出講解堆排序和堆

    在c++里有很多排序方法,比如相對簡單的冒泡排序、選擇排序、插入排序,還有 STL里的sort函數(shù)  手寫快排  歸并排序等,還有就是堆排序,這次主要說堆排序和堆
    2022-03-03
  • C++11中的智能指針shared_ptr、weak_ptr源碼解析

    C++11中的智能指針shared_ptr、weak_ptr源碼解析

    本文是基于gcc-4.9.0的源代碼進(jìn)行分析,shared_ptr和weak_ptr是C++11才加入標(biāo)準(zhǔn)的,僅對C++智能指針shared_ptr、weak_ptr源碼進(jìn)行解析,需要讀者有一定的C++基礎(chǔ)并且對智能指針有所了解
    2021-09-09
  • C++中靜態(tài)成員函數(shù)與靜態(tài)成員變量(static )

    C++中靜態(tài)成員函數(shù)與靜態(tài)成員變量(static )

    這篇文章主要介紹了C++中靜態(tài)成員函數(shù)與靜態(tài)成員變量(static )的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C語言鏈表完整操作演示

    C語言鏈表完整操作演示

    這篇文章主要為大家詳細(xì)介紹了C語言鏈表的完整操作演示,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • C++中為什么要使用動(dòng)態(tài)內(nèi)存

    C++中為什么要使用動(dòng)態(tài)內(nèi)存

    大家好,本篇文章主要講的是C++中為什么要使用動(dòng)態(tài)內(nèi)存,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • shared_ptr線程安全性全面分析

    shared_ptr線程安全性全面分析

    正如boost文檔所宣稱的,boost為shared_ptr提供了與內(nèi)置類型同級(jí)別的線程安全性。這包括:1. 同一個(gè)shared_ptr對象可以被多線程同時(shí)讀取。2. 不同的shared_ptr對象可以被多線程同時(shí)修改成
    2013-09-09
  • Qt實(shí)現(xiàn)電子時(shí)鐘的示例代碼

    Qt實(shí)現(xiàn)電子時(shí)鐘的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Qt實(shí)現(xiàn)顯示與桌面上并可以隨意拖拽至桌面任意位置的電子時(shí)鐘案例,感興趣的小伙伴可以嘗試一下
    2022-06-06
  • C++ 變量的聲明和初始化方式示例詳解

    C++ 變量的聲明和初始化方式示例詳解

    在 C++ 中,直接初始化和復(fù)制初始化之間有一些微妙的區(qū)別,通常,直接初始化更加高效并且可以用于更多的情況,因?yàn)樗诼暶鞯耐瑫r(shí)就執(zhí)行了初始化操作,這篇文章主要介紹了C++ 變量的聲明和初始化方式示例,需要的朋友可以參考下
    2024-06-06
  • C語言實(shí)現(xiàn)維吉尼亞密碼的示例代碼

    C語言實(shí)現(xiàn)維吉尼亞密碼的示例代碼

    維吉尼亞密碼(又譯維熱納爾密碼)是使用一系列凱撒密碼組成密碼字母表的加密算法,屬于多表密碼的一種簡單形式。本文將用C語言實(shí)現(xiàn)維吉尼亞密碼,需要的可以參考一下
    2022-11-11
  • C語言攝氏度互相轉(zhuǎn)換華氏

    C語言攝氏度互相轉(zhuǎn)換華氏

    這篇文章主要介紹了C語言攝氏度互相轉(zhuǎn)換華氏,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評論