Python OpenCV去除字母后面的雜線(xiàn)操作
原圖
代碼
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) # 提取水平線(xiàn) 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)元素,卷積核 # 提取垂直線(xiàn) 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 提取水平 垂直線(xiàn),去除雜線(xiàn),提取對(duì)象
我就廢話(huà)不多說(shuō)了,大家還是直接看代碼吧~
#include<opencv2opencv.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));//去除雜線(xiàn) 提取對(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去除字母后面的雜線(xiàn)操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
