Некорректная установка цвета PLT
Всем привет. Имеется код, который ищет на изображении контуры. При выводе изображений на экран с помощью PLT, метод Laplace выводится в некорректной цветовой гамме (картинка под кодом), при этом при выводу через cv2.imshow такой проблемы не наблюдается. Как можно решить данную проблему?
import sys
from skimage import filters
from skimage import feature
from skimage.color import rgb2gray
import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
import os
from skimage.util import invert
src = cv.imread("C:\\temp\\map-forest-2.png", cv.IMREAD_COLOR)
src = cv.GaussianBlur(src, (3, 3), 0)
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
edges_laplace = filters.laplace(gray)
edges_roberts = filters.roberts(gray)
edges_farid = filters.farid(gray)
edges_scharr = filters.scharr(gray)
edges_sobel = filters.sobel(gray)
edges_prewitt = filters.prewitt(gray)
edges_canny = feature.canny(gray)
fig, axes = plt.subplots(3, 3, figsize=(10, 10), sharex=True, sharey=True)
ax = axes.ravel()
ax[0].imshow(edges_laplace, cmap=plt.cm.gray)
ax[0].set_title('Laplace')
ax[0].axis('off')
ax[1].imshow(edges_scharr, cmap=plt.cm.gray)
ax[1].set_title('Scharr')
ax[1].axis('off')
ax[2].imshow(edges_roberts, cmap=plt.cm.gray)
ax[2].set_title('Roberts')
ax[2].axis('off')
ax[3].imshow(edges_prewitt, cmap=plt.cm.gray)
ax[3].set_title('Prewitt')
ax[3].axis('off')
ax[4].imshow(edges_farid, cmap=plt.cm.gray)
ax[4].set_title('Farid')
ax[4].axis('off')
ax[5].imshow(edges_sobel, cmap=plt.cm.gray)
ax[5].set_title("Sobel")
ax[5].axis('off')
ax[6].imshow(edges_canny, cmap=plt.cm.gray)
ax[6].set_title("Canny")
ax[6].axis('off')
fig.tight_layout()
plt.show()
Ответы (1 шт):
Оператор Лапласа дает на выходе картинку как с положительными, так и с отрицательными значениями. Вывод через plt преобразует значения яркости в соответствиии c colormap, так, чтобы минимальное (отрицательное) значение стало 0, максимальное (положительное) 255. Вывод через cv2.imshow видимо просто приводит все отрицательные значения к 0. Как исправить: или редактировать cm или вручную занулить отрицательные значения.
