Tôi muốn trích xuất các đường bao của một hình ảnh, được biểu thị dưới dạng một chuỗi các tọa độ điểm.Trích xuất đường bao đơn từ các cạnh của Canny
Với Canny
Tôi có thể tạo hình ảnh nhị phân chỉ chứa các cạnh của hình ảnh. Sau đó, tôi đang cố gắng sử dụng findContours
để trích xuất các đường nét. Kết quả là không OK, mặc dù.
Đối với mỗi cạnh, tôi thường có 2 dòng, như thể nó được coi là một khu vực rất mỏng. Tôi muốn đơn giản hóa các đường nét của mình để tôi có thể vẽ chúng thành các dòng đơn. Hoặc có thể giải nén chúng bằng một hàm khác để trực tiếp tạo ra kết quả chính xác sẽ còn tốt hơn nữa.
Tôi đã xem tài liệu của OpenCV nhưng tôi không thể tìm thấy bất kỳ điều gì hữu ích, nhưng tôi đoán rằng tôi không phải là người đầu tiên có vấn đề tương tự. Có bất kỳ chức năng hoặc phương pháp nào tôi có thể sử dụng không?
Đây là mã Python Tôi đã viết cho đến nay:
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)
Yếu tố quy mô được sử dụng để làm nổi bật các đường đôi của đường nét. Dưới đây là các liên kết đến những hình ảnh:
- Lena greyscale
- Edges chiết xuất với
Canny
- Contours: 10x zoom nơi bạn sẽ nhìn thấy sai kết quả sản xuất bởi
findContours
Bất kỳ đề xuất sẽ được đánh giá cao.
bạn nên sử dụng HoughLines http://docs.opencv.org/modules/imgproc/doc/feature_detection.html#houghlines – Khashayar
làm mờ hình ảnh để giảm tiếng ồn – baci
Tôi không nghĩ rằng đó là vấn đề về tiếng ồn trong th hình ảnh điện tử. Nếu bạn nhìn các cạnh được trích xuất với Canny thì chúng vẫn ổn. Với HoughLines tôi sẽ không thể xử lý các đường cong trong hình ảnh, phải không? – Muffo