Я работаю над проблемой классификации изображений и сейчас пытаюсь обрезать оптические изображения, отсканированные с помощью OCT, чтобы извлечь только слои сетчатки из нескольких изображений (около 85000 изображений). все изображения разные (для справки только некоторые)
Пожалуйста, решите мой код, чтобы подать заявку на все изображения, которые могут обрезать область интереса.
Я попытался найти контуры и обрезать изображение .... но не смог этого сделать, так как фон изображения не черный, а также имеет пиксели
(примечание: изображение не серого цвета)
мой код:
new_filepath = "/home/lebenpc/magick_octid"
for new_name in os.listdir(new_filepath):
if "." not in new_name:
continue
end = new_name.split(".")[1]
if end not in ["jpeg"]:
continue
try:
# Attempt to open an image file
image= cv2.imread(os.path.join(new_filepath,new_name))
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (7,7), 0)
# threshold the image, then perform a series of erosions +
# dilations to remove any small regions of noise
_, thresh = cv2.threshold(blur, 40, 255, cv2.THRESH_BINARY)
# find contours in thresholded image, then grab the largest
# one
contours, _ = cv2.findContours(thresh, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_TC89_KCOS)
c = max(contours, key = cv2.contourArea)
x,y,w,h = cv2.boundingRect(c)
crop =image[y:y+h,x:x+w]
name,extension = os.path.splitext(new_name)
cv2.imwrite(os.path.join("/home/lebenpc/abc", name + '.jpeg'),crop)
except IOError:
# Report error, and then skip to the next argument
print ("Problem opening",new_filepath,":")
Я ожидаю код, который можно применить ко всем изображениям
![Input 1](https://i.stack.imgur.com/S7iwC.jpg)
![Input 2](https://i.stack.imgur.com/0mVSn.jpg)
![Input 3](https://i.stack.imgur.com/5Rzda.jpg)