问题描述
我有一张类似于下图(左侧)的图片:
我只想提取右侧的红色像素:属于 1px 垂直线的像素,但不提取到任何较粗的线或具有超过 1 个相邻黑色像素的其他区域。图像是双色调的。
到目前为止,我已经尝试了具有垂直(10px,这是我的目的)和水平内核的形态 OPEN
并采用了差异,但这需要一个尴尬的转变并留下一些“斑点”:
vertical_kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(1,10))
vertical_mask1 = cv2.morphologyEx(thresh,cv2.MORPH_OPEN,vertical_kernel,iterations=1)
horz_kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(2,1))
horz_mask = cv2.morphologyEx(thresh,horz_kernel,iterations=1)
M = np.float32([[1,-1],[0,1,1]])
rows,cols = horz_mask.shape
vertical_mask = cv2.warpAffine(horz_mask,M,(cols,rows))
result = cv2.bitwise_and(thresh,cv2.bitwise_not(horz_mask))
隔离 1px 线(且仅 1px 线)的正确方法是什么?
在一般情况下,对于其他内核,这个问题是:如何找到图像中位于内核“适合内部”区域的所有像素(然后进行减法以获得我想要的结果)?
>解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)