各位用户为了找寻关于Python OpenCV去除字母后面的杂线操作的资料费劲了很多周折。这里教程网为您整理了关于Python OpenCV去除字母后面的杂线操作的相关资料,仅供查阅,以下为您介绍关于Python OpenCV去除字母后面的杂线操作的详细内容

原图

代码

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 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 提取水平 垂直线,去除杂线,提取对象

我就废话不多说了,大家还是直接看代码吧~

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 #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; }

以上这篇Python OpenCV去除字母后面的杂线操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/sxlsxl119/article/details/80223729