

低端有一条很小的蓝线请问如何去掉?
这个是原图请问如何去出掉低端的横线。
1 inflationaaron Jan 14, 2018 via iPhone 直接用 PIL 不行吗 |
2 Hzzone Jan 14, 2018 via iPhone mask |
3 MinQ Jan 14, 2018 via Android height 高于某个定值,如果 RGB 颜色不是白色,填充这个像素为白色,收工 |
4 merliny Jan 14, 2018 via iPhone 数数那是多少像素,然后 rect,把上面的部分截取出来,或者直接把下面的全部写成相同像素 |
5 defphilip Jan 14, 2018 如果图片只有这条横线,而且一定是最底端,图片都这么大,那么你直接把最底端的像素的颜色都设置成背景颜色就好了 如果这条横线还会在其他地方,你可以用 HoughLineP (设置 threshold 和 minLineLength 俩参数),找最长的那条直线,因为斜率一定是 0,所以 HoughLineP 对应的第一个点的纵坐标就是直线的那个位置 |
6 woshichuanqilz OP @woshichuanqilz @inflationaaron @ |
7 thinkItThrough Jan 14, 2018 5 楼哈夫变换线识别可解,简单点的话就遍历一遍就行了 |
8 xujialiang Jan 14, 2018 opencv 运行下面代码,可以看到如图 http://image.xujialiang.net/[email protected] 很容易看出从第一行开始切割。。 import cv2 import numpy as np import matplotlib.pyplot as plt ori_img = cv2.imread('./TestData/' + '111.png') im_gray = cv2.cvtColor(ori_img, cv2.COLOR_BGR2GRAY) im_at_mean = cv2.adaptiveThreshold(im_gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 5, 10) cv2.imshow('im_at_mean' , im_at_mean) im_at_mean_inv = cv2.bitwise_not(im_at_mean) horizontal_sum = np.sum(im_at_mean_inv, axis=1) plt.plot(horizontal_sum, range(horizontal_sum.shape[0])) plt.gca().invert_yaxis() plt.show() cv2.waitKey(0) cv2.destroyAllWindows() |
9 xujialiang Jan 14, 2018 上面打错一个字。。。很容易看出从第几行开始切割。。 |
10 hackcv Jan 14, 2018 可以统计每行的 RGB 色彩的数量,如果某一行同一颜色的数据和列数差不多(可以设置个阈值),就可以把这行看做是一条横线,直接切掉或者修改这行颜色即可。 |
11 singer PRO 不用 opencv 也行的。 读取一下像素值。大于多少高度(避免把字给处理了),颜色值低于 255(阈值自己设置)的都置位 255 |