我正在尝试清理上面的图像我已经尝试了几种使用open cv的不同方法,我要么过多地侵蚀原始图像,使得部分字母丢失,如下所示:
我不确定如何摆脱最后一条对角线并修复S,到目前为止,我的代码是:
import cv2
import matplotlib.pylab as plt
img = cv2.imread('/captcha_3blHDdS.png')
#make image gray
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#Blur
blur = cv2.GaussianBlur(gray,(5,5),0)
bilateral = cv2.bilateralFilter(gray,5,75,75)
#Thresholding
ret, thresh = cv2.threshold(bilateral,25,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
#Kernal
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
#other things
erosion = cv2.erode(thresh,kernel,iterations = 1)
closing = cv2.morphologyEx(erosion, cv2.MORPH_CLOSE, kernel, iterations = 1)
#Transform image
dist_transform = cv2.distanceTransform(closing,cv2.DIST_L2,5)
ret, sure_fg = cv2.threshold(dist_transform,0.02*dist_transform.max(),255,cv2.THRESH_BINARY)#,255,0)
#kernel_1
kernel_1 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (1, 2))
dilation_1 = cv2.dilate(sure_fg,kernel_1,iterations = 2)
erosion_1 = cv2.erode(dilation_1,kernel_1,iterations = 3)
plt.imshow(erosion_1, 'gray')
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,以下是更多从验证码产生的图像类型的例子;

还包含指向包含 …
给出一个整数列表,例如:
lst = [-5, -1, -13, -11, 4, 8, 16, 32]
Run Code Online (Sandbox Code Playgroud)
是否有一种Pythonic方法来检索列表中最大的负数(例如-1)和列表中最小的正数(例如4)?
嗨希望得到一些帮助,我有两列Dataframe df作为;
Source ID
1 2
2 3
1 2
1 2
1 3
3 1
Run Code Online (Sandbox Code Playgroud)
我的目的是对Source进行分组,并根据分组的Source将ID单元格除以总计,并将其附加到orginial数据框,以便新列看起来像;
Source ID ID_new
1 2 2/9
2 3 3/3
1 2 2/9
1 2 2/9
1 3 3/9
3 1 3/1
Run Code Online (Sandbox Code Playgroud)
我已经到了;
df.groupby('Source ID')['ID'].sum()
Run Code Online (Sandbox Code Playgroud)
得到总数,ID但我不知道下一步去哪里.