Python OpenCV去除字母后面的雜線操作
原圖

代碼
src = cv2.imread("28.png")
gray_src = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
#cv2.imshow("input image", src)
#cv2.imshow("gray image", gray_src)
#cv2.waitKey(0)
gray_src = cv2.bitwise_not(gray_src)
#二值化
binary_src = cv2.adaptiveThreshold(gray_src, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 15, -2)
cv2.namedWindow("result image", cv2.WINDOW_AUTOSIZE)
cv2.imshow("result image", binary_src)
#cv2.waitKey(0)
# 提取水平線 src.shape[1]得到src列數(shù)
#hline = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 1), (-1, -1))
hline = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 4), (-1, -1)) #定義結(jié)構(gòu)元素,卷積核
# 提取垂直線 src.shape[0]得到src行數(shù)
vline = cv2.getStructuringElement(cv2.MORPH_RECT, (4, 1), (-1, -1))
#vline = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
# 這兩步就是形態(tài)學(xué)的開(kāi)操作——先腐蝕再膨脹
#temp = cv2.erode(binary_src, hline) #腐蝕
#dst = cv2.dilate(temp, hline) #膨脹
# 開(kāi)運(yùn)算
dst = cv2.morphologyEx(binary_src, cv2.MORPH_OPEN, hline) #水平方向
dst = cv2.morphologyEx(dst, cv2.MORPH_OPEN, vline) #垂直方向
#將二指圖片的效果反轉(zhuǎn)既黑色變白色,白色變黑色。 非操作
dst = cv2.bitwise_not(dst)
cv2.imshow("Final image", dst)
cv2.waitKey(0)
結(jié)果圖,還有一些點(diǎn)需要進(jìn)一步處理

補(bǔ)充知識(shí):Opencv 提取水平 垂直線,去除雜線,提取對(duì)象

我就廢話不多說(shuō)了,大家還是直接看代碼吧~
#include<opencv2\opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main(int argc, char* argv[])
{
Mat src = imread("截圖3.jpg");
if (src.empty())
{
return -1;
}
String strInput = "input image";
namedWindow(strInput, CV_WINDOW_AUTOSIZE);
imshow(strInput, src);
Mat dst;
cvtColor(src, dst, CV_BGR2GRAY);//轉(zhuǎn)灰度
imshow("output grap image", dst);
Mat binimg;
adaptiveThreshold(~dst, binimg, 255, ADAPTIVE_THRESH_MEAN_C, ADAPTIVE_THRESH_MEAN_C, 15, -2);//轉(zhuǎn)二值
imshow("binary image", binimg);
Mat hLine = getStructuringElement(MORPH_RECT, Size(src.cols/16, 1), Point(-1, -1));//水平結(jié)構(gòu)
Mat vLine = getStructuringElement(MORPH_RECT, Size(1, src.rows / 16), Point(-1, -1));//垂直結(jié)構(gòu)
Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1));//去除雜線 提取對(duì)象
Mat tmp;
//erode(binimg, tmp, vLine);
//dilate(tmp, dst, vLine);
morphologyEx(binimg, dst, CV_MOP_OPEN,hLine);
bitwise_not(dst, dst);//取反
blur(dst, dst, Size(3, 3), Point(-1, -1));
imshow("Final image", dst);
waitKey(0);
return 0;
}
以上這篇Python OpenCV去除字母后面的雜線操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python 中如何使用 virtualenv 管理虛擬環(huán)境
這篇文章主要介紹了Python 中使用 virtualenv 管理虛擬環(huán)境的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-01-01
python實(shí)現(xiàn)socket客戶(hù)端和服務(wù)端簡(jiǎn)單示例
這篇文章主要介紹了python實(shí)現(xiàn)socket客戶(hù)端和服務(wù)端簡(jiǎn)單示例,需要的朋友可以參考下2014-02-02
Anaconda+VSCode配置tensorflow開(kāi)發(fā)環(huán)境的教程詳解
Anaconda是一個(gè)開(kāi)源的python發(fā)行版本,是現(xiàn)在比較流行的python數(shù)據(jù)科學(xué)平臺(tái),可以對(duì)python的科學(xué)包做到有效管理。這篇文章主要介紹了Anaconda+VSCode配置tensorflow開(kāi)發(fā)環(huán)境,需要的朋友可以參考下2020-03-03
python random從集合中隨機(jī)選擇元素的方法
今天小編就為大家分享一篇python random從集合中隨機(jī)選擇元素的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01

