同步操作将从 mirrors_gloomyfish1998/opencv_tutorial 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
##################################################### 作者:zhigang,# 微博:https://weibo.com/u/3181256271####################################################import cv2 as cvimport numpy as npclass LineDetector:def __init__(self):self.lines = []def find_lines(self, frame):h, w, ch = frame.shape# 二值化图像print("start to detect lines...\n")gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)cv.imshow("binary image", binary)cv.imwrite("D:/binary.png", binary)dist = cv.distanceTransform(binary, cv.DIST_L1, cv.DIST_MASK_PRECISE)cv.imshow("distance", dist/15)dist = dist / 15result = np.zeros((h, w), dtype=np.uint8)ypts = []for row in range(h):cx = 0cy = 0max_d = 0for col in range(w):d = dist[row][col]if d > max_d:max_d = dcx = colcy = rowresult[cy][cx] = 255ypts.append([cx, cy])xpts = []for col in range(w):cx = 0cy = 0max_d = 0for row in range(h):d = dist[row][col]if d > max_d:max_d = dcx = colcy = rowresult[cy][cx] = 255xpts.append([cx, cy])cv.imshow("lines", result)cv.imwrite("D:/skeleton.png", result)frame = self.line_fitness(ypts, image=frame)frame = self.line_fitness(xpts, image=frame, color=(255, 0, 0))cv.imshow("fit-lines", frame)cv.imwrite("D:/fitlines.png", frame)return self.linesdef line_fitness(self, pts, image, color=(0, 0, 255)):h, w, ch = image.shape[vx, vy, x, y] = cv.fitLine(np.array(pts), cv.DIST_L1, 0, 0.01, 0.01)y1 = int((-x * vy / vx) + y)y2 = int(((w - x) * vy / vx) + y)cv.line(image, (w - 1, y2), (0, y1), color, 2)return imageif __name__ == "__main__":src = cv.imread("D:/javaopencv/two_lines.jpg")ld = LineDetector()lines = ld.find_lines(src)cv.waitKey(0)cv.destroyAllWindows()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。