이미지의 윤곽을 추출하고 싶습니다. 포인트 좌표의 시퀀스로 표현됩니다.Canny 가장자리에서 단일 선 컨투어 추출
Canny
나는 이미지의 가장자리 만 포함하는 이진 이미지를 생성 할 수 있습니다. 그런 다음 윤곽을 추출하려면 findContours
을 사용하려고합니다. 그러나 결과는 좋지 않습니다.
각 가장자리마다 매우 얇은 영역으로 간주되는 것처럼 2 줄이 자주 나옵니다. 윤곽을 단순화하여 단일 선으로 그릴 수 있습니다. 또는 올바른 결과를 직접 생성하는 다른 기능으로 추출하는 것이 더 낫습니다.
OpenCV의 설명서를 살펴 봤지만 유용한 것을 찾을 수 없었지만 비슷한 문제가있는 첫 번째 것이 아닐 것입니다. 사용할 수있는 기능이나 메소드가 있습니까? 스케일 인수가 윤곽의 이중 라인을 강조하는 데 사용됩니다
def main():
img = cv2.imread("lena-mono.png", 0)
if img is None:
raise Exception("Error while loading the image")
canny_img = cv2.Canny(img, 80, 150)
contours, hierarchy = cv2.findContours(canny_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
contours_img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
scale = 10
contours_img = cv2.resize(contours_img, (0, 0), fx=scale, fy=scale)
for cnt in contours:
color = np.random.randint(0, 255, (3)).tolist()
cv2.drawContours(contours_img,[cnt*scale], 0, color, 1)
cv2.imwrite("canny.png", canny_img)
cv2.imwrite("contours.png", contours_img)
: 여기
는 지금까지 작성한 파이썬 코드입니다. 다음은 이미지에 대한 링크입니다 :모든 생산 볼 수있는 10 배 줌 제안은 크게 감사하겠습니다.
사용한다 HoughLines http://docs.opencv.org/modules/imgproc/doc/feature_detection.html#houghlines – Khashayar
노이즈를 줄이기 위해 이미지를 흐리게 처리합니다. – baci
나는 th의 노이즈 문제라고 생각하지 않습니다. 전자 이미지. Canny로 추출한 가장자리를 보면 괜찮습니다. HoughLines를 사용하면 이미지의 곡선을 처리 할 수 없을 것입니다. 그렇습니까? – Muffo