Я пишу скрипт на Python для моего класса обработки изображений, который должен прочитать каталог для изображений, отобразить их, а затем я добавлю дополнительный код для выполнения установки порога Otsu для этих изображений.Я могу получить эталонное изображение для правильного отображения, чтобы включить настройку порога Otsu;Тем не менее, я сталкиваюсь с проблемами, когда я пытаюсь отобразить оставшиеся изображения в каталоге.Я не уверен, что мои изображения читаются из каталога правильно, так как я пытаюсь сохранить их в массиве;однако я вижу, что в окне вывода отображаются серые квадраты, которые соответствуют размерам фактических разрешений изображения, что говорит о том, что они по крайней мере частично читаются правильно.
Я уже пытался изолировать скрипт для загрузки изображений и отображения их в отдельном файле и запуска его.Я был обеспокоен тем, что успешная обработка моего образца изображения (который включал черно-белую бинаризацию) как-то влияла на мое отображение изображения позже.Это было не так, поскольку при запуске отдельного скрипта выводился такой же серый квадрат.
**** Обновление ****
Мне удалось настроить приведенный ниже скрипт (еще не обновленный), чтобы он работал почти корректно.Записав полный путь к файлу непосредственно для каждого файла, я могу получить вывод для правильного отображения.Кажется, есть некоторая проблема с загрузкой изображений в массив, насколько я могу судить;потенциальный обходной путь для будущего тестирования - импорт расположений файлов в виде строкового массива и его реализация вместо прямой загрузки изображений в массив.
import cv2 as cv
import numpy as np
from PIL import Image
import glob
from matplotlib import pyplot as plot
import time
image=cv.imread('Fig ref.jpg')
image2=cv.cvtColor(image, cv.COLOR_RGB2GRAY)
cv.imshow('Image', image)
# global thresholding
ret1,th1 = cv.threshold(image2,127,255,cv.THRESH_BINARY)
# Otsu's thresholding
ret2,th2 = cv.threshold(image2,0,255,cv.THRESH_BINARY+cv.THRESH_OTSU)
# Otsu's thresholding after Gaussian filtering
blur = cv.GaussianBlur(image2,(5,5),0)
ret3,th3 = cv.threshold(blur,0,255,cv.THRESH_BINARY+cv.THRESH_OTSU)
# plot all the images and their histograms
images = [image2, 0, th1,
image2, 0, th2,
blur, 0, th3]
titles = ['Original Noisy Image','Histogram','Global Thresholding (v=127)',
'Original Noisy Image','Histogram',"Otsu's Thresholding",
'Gaussian filtered Image','Histogram',"Otsu's Thresholding"]
for i in range(3):
plot.subplot(3,3,i*3+1),plot.imshow(images[i*3],'gray')
plot.title(titles[i*3]), plot.xticks([]), plot.yticks([])
plot.subplot(3,3,i*3+2),plot.hist(images[i*3].ravel(),256)
plot.title(titles[i*3+1]), plot.xticks([]), plot.yticks([])
plot.subplot(3,3,i*3+3),plot.imshow(images[i*3+2],'gray')
plot.title(titles[i*3+2]), plot.xticks([]), plot.yticks([])
plot.show()
imageFolderPath = 'D:\Google Drive\Engineering\Senior Year\Image processing\Image processing group work'
imagePath = glob.glob(imageFolderPath + '/*.JPG')
im_array = np.array( [np.array(Image.open(img).convert('RGB')) for img in imagePath] )
temp=cv.imread("D:\Google Drive\Engineering\Senior Year\Image processing\Image processing group work\Fig ref.jpg")
cv.imshow('image', temp)
time.sleep(15)
for i in range(9):
cv.imshow('Image', im_array[i])
time.sleep(2)