opencv檢測(cè)直線方法之形態(tài)學(xué)方法
在閱讀文獻(xiàn)中,偶然發(fā)現(xiàn)使用使用形態(tài)學(xué)方法也可以檢測(cè)直線,故做實(shí)驗(yàn)并記錄。
使用該方法,需要定義一個(gè)長(zhǎng)度為L(zhǎng)的結(jié)構(gòu)元素element,其大小應(yīng)足夠大以保留圖像中的字符筆劃,然而又恰好能檢測(cè)出圖像中最短的表格線。
定義如下兩個(gè)結(jié)構(gòu)element用以檢測(cè)圖中水平、豎直的表格線:
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)元素對(duì)圖像的水平以及豎直方向做閉運(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)容如有不妥之處,望指正!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- OpenCV實(shí)現(xiàn)圖像輪廓檢測(cè)以及外接矩形
- OpenCV實(shí)現(xiàn)圖像的直線檢測(cè)
- OpenCV實(shí)現(xiàn)圖像邊緣檢測(cè)
- OpenCV利用霍夫變換進(jìn)行直線檢測(cè)
- opencv檢測(cè)直線方法之投影法
- 利用Opencv中Houghline方法實(shí)現(xiàn)直線檢測(cè)
- 10個(gè)步驟Opencv輕松檢測(cè)出圖片中條形碼
- 使用OpenCV實(shí)現(xiàn)檢測(cè)和追蹤車(chē)輛
- opencv實(shí)現(xiàn)圖片與視頻中人臉檢測(cè)功能
- OpenCV實(shí)現(xiàn)圖像角點(diǎn)檢測(cè)
相關(guān)文章
基于C語(yǔ)言實(shí)現(xiàn)靜態(tài)通訊錄的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用C語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的靜態(tài)通訊錄,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C語(yǔ)言有一定幫助,需要的可以參考一下2022-07-07
Qt實(shí)現(xiàn)Slider滑塊條組件的示例代碼
在Qt中我們可以通過(guò)拖拽的方式將不同組件放到指定的位置,本文主要介紹了Qt實(shí)現(xiàn)Slider滑塊條組件的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12
Linux下C語(yǔ)言實(shí)現(xiàn)貪吃蛇小游戲
這篇文章主要為大家詳細(xì)介紹了Linux下C語(yǔ)言實(shí)現(xiàn)貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03
C/C++中memset,memcpy的使用及fill對(duì)數(shù)組的操作
這篇文章主要介紹了C/C++中memset,memcpy的使用及fill對(duì)數(shù)組的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
淺談C++虛重載操作符 virtual operator= 的使用方法
下面小編就為大家?guī)?lái)一篇淺談C++虛重載操作符 virtual operator= 的使用方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01
C/C++高精度運(yùn)算(大整數(shù)運(yùn)算)詳細(xì)講解
高精度算法的本質(zhì)是把大數(shù)拆成若干固定長(zhǎng)度的塊,然后對(duì)每一塊進(jìn)行相應(yīng)的運(yùn)算,下面這篇文章主要給大家介紹了關(guān)于C/C++高精度運(yùn)算(大整數(shù)運(yùn)算)的相關(guān)資料,需要的朋友可以參考下2022-11-11
使用c語(yǔ)言輕松實(shí)現(xiàn)動(dòng)態(tài)內(nèi)存管
這篇文章主要介紹了使用c語(yǔ)言輕松實(shí)現(xiàn)動(dòng)態(tài)內(nèi)存管,本文章內(nèi)容詳細(xì),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,需要的朋友可以參考下2023-01-01

