Я решил одну из проблем, где мне нужно:
- Считать все изображения из папки, которые принимают все форматы изображений, кроме PDF.
- Найти контуры и записатьвсе контурные изображения в указанной выходной папке.
- Создайте подпапку под именем файла и запишите сегментированные изображения в соответствующие папки.
Я сделал программу для неев Python, но теперь у меня возникают проблемы при написании функций для каждой из проблемных точек и выполнения программы с помощью командной строки.
В основном мне нужно написать общий код, чтобы в будущем, если я получу новые изображения, я не 'не нужно менять код (это означает, что он должен запрашивать входные файлы на командной консоли внутри файла python, будет общий код, применимый для любого файла).
import cv2
import numpy as np
import os
os.getcwd()
os.chdir("C:/Users/ani/Downloads/Assignment")
# variable
filename = "1 (103)_A_0_0_NAME"
# create a folder for this image
path = "C:/Users/ani/Desktop//"+filename
if not os.path.exists(path):
os.makedirs(path)
# load image in grayscale
img = cv2.imread(filename+".jpg",0)
# threshold image
ret,mask = cv2.threshold(img,240,255,cv2.THRESH_BINARY_INV)
# find contours
contours, hier = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# sort contours
sorted_ctrs = sorted(contours, key=lambda ctr: cv2.boundingRect(ctr)[0])
for i in range(len(sorted_ctrs)):
# get contour
cnt = sorted_ctrs[i]
# get the dimensions of the boundingRect
x,y,w,h = cv2.boundingRect(cnt)
# create a subimage based on boundingRect
sub_img = img[y:y+h,x:x+w]
sub_img = ~sub_img
# save image of contour with indexed name
cv2.imwrite(path +"\contour_"+str(i)+".jpg", sub_img)
Я хочу общий код, который принимаетввод для файла изображения в командной строке, который в основном означает файл кода функции Python, который выполняет все 3 шага без указания ввода fрасположение файла в файле программы.(Входной файл прилагается)
1-й:
2-й:
3-й: