1. 程式人生 > 程式設計 >Python OpenCV去除字母后面的雜線操作

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

原圖

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列數
  #hline = cv2.getStructuringElement(cv2.MORPH_RECT,(1,1),(-1,-1))
  hline = cv2.getStructuringElement(cv2.MORPH_RECT,4),-1)) #定義結構元素,卷積核
  # 提取垂直線  src.shape[0]得到src行數
  vline = cv2.getStructuringElement(cv2.MORPH_RECT,(4,-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,vline)  #垂直方向
  #將二指圖片的效果反轉既黑色變白色,白色變黑色。 非操作
  dst = cv2.bitwise_not(dst)
  cv2.imshow("Final image",dst)
  cv2.waitKey(0)

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

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

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

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

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

#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);//轉灰度
	imshow("output grap image",dst);
	Mat binimg;
	adaptiveThreshold(~dst,binimg,ADAPTIVE_THRESH_MEAN_C,-2);//轉二值
	imshow("binary image",binimg);
	Mat hLine = getStructuringElement(MORPH_RECT,Size(src.cols/16,Point(-1,-1));//水平結構
	Mat vLine = getStructuringElement(MORPH_RECT,Size(1,src.rows / 16),-1));//垂直結構
 
	Mat kernel = getStructuringElement(MORPH_RECT,Size(3,3),-1));//去除雜線 提取物件
	Mat tmp;
	//erode(binimg,tmp,vLine);
	//dilate(tmp,vLine);
	morphologyEx(binimg,CV_MOP_OPEN,hLine);
	bitwise_not(dst,dst);//取反
	blur(dst,-1));
	imshow("Final image",dst);
 
	waitKey(0);
	return 0;
}

以上這篇Python OpenCV去除字母后面的雜線操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。