Проблема составляет thresholded
в imwrite()
, поэтому я использовал print()
, чтобы увидеть (и сравнить вручную) thresholded
с grayscale
, который можно использовать с imwrite()
без проблем.
grayscale
- это массив, но thresholded
имеет другую конструкцию - он выглядит как кортеж с двумя элементами - некоторым числом и массивом. Если я использую thresholded[1]
, тогда я получаю массив, который можно использовать с imwrite()
, но я не проверял, что я получаю в "image.png"
import cv2
import numpy as np
import pandas as pd
img = cv2.imread('Obrazy/21586784_1642005829205281_8345912444787042013_o.jpg', cv2.IMREAD_COLOR)
grayscale = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
print(grayscale)
thresholded = cv2.threshold(grayscale, 0, 255, cv2.THRESH_OTSU)
print(thresholded[1]) # <-- [1]
cv2.imwrite("image.png", thresholded[1]) # <-- [1]
bbox = cv2.boundingRect(thresholded[1]) # <-- [1]
x, y, w, h = bbox
print(bbox)
foreground = img[y:y+h, x:x+w]
cv2.imwrite("foreground.png", foreground)