歡迎您光臨本站 註冊首頁

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

←手機掃碼閱讀     zmcjlove @ 2020-07-06 , reply:0

原圖

代碼

    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列數    #hline = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 1), (-1, -1))    hline = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 4), (-1, -1)) #定義結構元素,卷積核    # 提取垂直線  src.shape[0]得到src行數    vline = cv2.getStructuringElement(cv2.MORPH_RECT, (4, 1), (-1, -1))    #vline = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))    # 這兩步就是形態學的開操作――先腐蝕再膨脹    #temp = cv2.erode(binary_src, hline)   #腐蝕    #dst = cv2.dilate(temp, hline)      #膨脹    # 開運算    dst = cv2.morphologyEx(binary_src, cv2.MORPH_OPEN, hline)  #水平方向    dst = cv2.morphologyEx(dst, cv2.MORPH_OPEN, vline)  #垂直方向    #將二指圖片的效果反轉既黑色變白色,白色變黑色。 非操作    dst = cv2.bitwise_not(dst)    cv2.imshow("Final image", dst)    cv2.waitKey(0)

 

結果圖,還有一些點需要進一步處理

補充知識:Opencv 提取水平 垂直線,去除雜線,提取對象

我就廢話不多說了,大家還是直接看代碼吧~

  #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);//轉灰度  	imshow("output grap image", dst);  	Mat binimg;  	adaptiveThreshold(~dst, binimg, 255, ADAPTIVE_THRESH_MEAN_C, ADAPTIVE_THRESH_MEAN_C, 15, -2);//轉二值  	imshow("binary image", binimg);  	Mat hLine = getStructuringElement(MORPH_RECT, Size(src.cols/16, 1), Point(-1, -1));//水平結構  	Mat vLine = getStructuringElement(MORPH_RECT, Size(1, src.rows / 16), Point(-1, -1));//垂直結構     	Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1));//去除雜線 提取對象  	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;  }

 

   


[zmcjlove ] Python OpenCV去除字母后面的雜線操作已經有225次圍觀

http://coctec.com/docs/python/shhow-post-241481.html