使用 OpenCV 和 matplotlib 将图像打印到屏幕上有什么区别?
What's the difference in printing an image to the screen using OpenCV and matplotlib?
OpenCV 和 matplotlib 在使用各自的 imshow
函数显示图像时,有时会给出相同的输出,有时会给出不同的输出。它们有什么区别?
例如,此代码给出相同的输出:
img = cv2.imread("sudoku.jpg")
plt.figure()
plt.imshow(img, cmap="gray")
plt.axis("off")
plt.title("orjinal")
plt.show()
cv2.imshow("orjinal",img)
matplotlib:
打开简历:
这段代码给出了不同的输出:
laplacian = cv2.Laplacian(img,ddepth=cv2.CV_16S)
plt.figure()
plt.imshow(laplacian, cmap="gray")
plt.axis("off")
plt.title("laplacian")
plt.show()
cv2.imshow("laplacian",laplacian)
matplotlib:
打开简历:
主要区别以及导致您显示的差异的原因是,默认情况下,matplotlib 会缩放图像,使其最小值为黑色,最大值为白色。 OpenCV 总是根据数据类型显示图像,例如对于 uint8 图像,0 是黑色,255 是白色。在你的例子中,你有一个签名的 16 位图像,其中 -32768 为黑色,32767 为白色。您的像素值占据的范围更小,因此所有像素值都显示为相同的 middle-gray 颜色。
OpenCV 和 matplotlib 在使用各自的 imshow
函数显示图像时,有时会给出相同的输出,有时会给出不同的输出。它们有什么区别?
例如,此代码给出相同的输出:
img = cv2.imread("sudoku.jpg")
plt.figure()
plt.imshow(img, cmap="gray")
plt.axis("off")
plt.title("orjinal")
plt.show()
cv2.imshow("orjinal",img)
matplotlib:
这段代码给出了不同的输出:
laplacian = cv2.Laplacian(img,ddepth=cv2.CV_16S)
plt.figure()
plt.imshow(laplacian, cmap="gray")
plt.axis("off")
plt.title("laplacian")
plt.show()
cv2.imshow("laplacian",laplacian)
matplotlib:
主要区别以及导致您显示的差异的原因是,默认情况下,matplotlib 会缩放图像,使其最小值为黑色,最大值为白色。 OpenCV 总是根据数据类型显示图像,例如对于 uint8 图像,0 是黑色,255 是白色。在你的例子中,你有一个签名的 16 位图像,其中 -32768 为黑色,32767 为白色。您的像素值占据的范围更小,因此所有像素值都显示为相同的 middle-gray 颜色。