Tôi sẽ viết mã và không đi qua nó vì có rất nhiều chức năng và tôi ghét phải thừa nhận những gì bạn biết hoặc không biết và dành nhiều thời gian để viết. Nếu bạn có bất kỳ câu hỏi nào, vui lòng hỏi và tôi sẽ thêm chúng vào bài đăng.
Bạn đã yêu cầu vừa vặn hình tròn với hình bóng lưỡi liềm, vì vậy tôi đã lắp vòng tròn vào bóng tối. Điều quan trọng là phải nhận ra rằng trong một số loại mã sản xuất mà, tôi tưởng tượng, phải xử lý rất nhiều hình ảnh về bản chất này, nó sẽ là cần thiết để tinh chỉnh các vòng tròn được trang bị. Đặc biệt là bất kỳ loại phân tích cấu trúc nào của kiểu này chỉ là lo lắng về việc lắp hình dạng đã cho cho các pixel, không phải là đối tượng được đề cập là những gì bạn đang tìm kiếm.
Tôi đã cố tình để lại vòng tròn được trang bị sai trong đó. Tôi sẽ đề nghị đi cho bao lồi, hoặc Haar dò hoặc phù hợp với hình dạng tùy thuộc vào chính xác những gì bạn quan tâm.
import cv2
import numpy as np
img = cv2.imread("orig.png", cv2.IMREAD_GRAYSCALE)
ret, thresh = cv2.threshold(img, 80, 255, cv2.THRESH_BINARY_INV)
ero = cv2.erode(thresh, np.ones((5,5)))
dil = cv2.dilate(ero, np.ones((5,5)))
img, contours, hierarchy = cv2.findContours(dil, cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_NONE)
#just for drawing purposes, the cimg is not really required
cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
for cnt in contours:
(x, y), radius = cv2.minEnclosingCircle(cnt)
center = (int(x), int(y))
radius = int(radius)
cv2.circle(cimg, center, radius, (255, 0, 0), 1)
Những hình ảnh đầu ra tôi nhận được
Cả hai crescents được trang bị một cách chính xác với phần dưới cùng phù hợp với bên ngoài của bể và không phải là lưỡi liềm chính xác. Bạn có thể làm một loại theo dõi trễ và thay đổi vòng tròn đó cho đến khi nó là cạnh bên ngoài chính xác ở lưỡi liềm khá nhất quán mặc dù.
Có một vòng kết nối bổ sung có thể bị xóa nếu bạn điều chỉnh các thông số vừa phải nhưng lọc vòng kết nối chính xác mà bạn cần là tùy thuộc vào bạn. F.e. nếu bạn chỉ muốn lưỡi liềm trên yêu cầu phối hợp nhỏ nhất y
, nếu tất cả các bóng lớn như vậy, bạn có thể yêu cầu chỉ các vòng tròn bán kính lớn hơn một số ngưỡng ... vn2
bạn có nghĩa là khu vực "lưỡi liềm" tại đầu trong hình ảnh? – Micka
Có - bóng tối xuất hiện ở nửa trên của hình ảnh. – Sam
Bạn có thể cung cấp hình ảnh đầu vào không? –