import cv2
fname = '1.png'
img=cv2.imread(fname, 0)
print (img)//the outcome is an array of values from 0 to 255 (grayscale)
ret, thresh = cv2.threshold(img, 254, 255, cv2.THRESH_BINARY)
thresh = cv2.bitwise_not(thresh)
nums, labels = cv2.connectedComponents(thresh, None, 4, cv2.CV_32S)
dst = cv2.convertScaleAbs(255.0*labels/nums)
cv2.imwrite(dest_dir+"output.png", dst)
этот код работает просто отлично, поэтому я перешел к настройке своего кода, чтобы он мог брать часть изображения, а не все изображение:
from PIL import Image
img = Image.open(fname)
img2 = img.crop((int(xmin), int(yMin),int(xMax), int(yMax))
xmin ymin xmax ymax просто верхняя левая нижняя правая координата поля. затем я сделал img = cv2.imread(img2)
, чтобы продолжить как предыдущий код, но получил ошибку, я напечатал img2 и получил <PIL.Image.Image image mode=RGB size=54x10 at 0x7F4D283AFB70>
как я могу настроить его, чтобы иметь возможность вводить эту обрезку или часть изображения вместо fname в моем коде выше, и обратите внимание, что я не Не хочу сохранять img2 как изображение и продолжать оттуда, потому что мне нужно работать с основным изображением.
fname
в четвертой строке кода, которым я поделился в своем вопросе. 14.06.2018connected components
, но к основному изображению, для которого я поделился кодом в своем вопросе, так что в случае, если обрезанный объект не сделан должным образом и есть еще подключенные пиксели, я смогу их получить, надеюсь, мой комментарий помог. 14.06.2018