Matplotlib:在更改图像时保持缩放不起作用

时间:2019-08-21 20:33:16

标签: python image-processing

我使用matplotlib和一个在按键时触发的更新功能,以循环浏览特定文件夹中的许多图像。

这是我的更新功能的一部分:

# skipping through the images with a and d
if event.key == "d":
    if photoIndex == numberOfPhotos-1:
        photoIndex = 0
    else:
        photoIndex += 1

elif event.key == "a":
    if photoIndex == 0:
        photoIndex = numberOfPhotos-1
    else:
        photoIndex -= 1

# Handle key press event
if event.key == "h":
    if equalizeHistogram == False:
        equalizeHistogram = True
    elif equalizeHistogram == True:
        equalizeHistogram = False

if event.key == "c":
    if calculateEdges == False:
        calculateEdges = True
    elif calculateEdges == True:
        calculateEdges = False

imagePath = imageFolder + os.listdir(imageFolder)[photoIndex]
unprocessedImage = cv2.cvtColor(cv2.imread(imagePath), cv2.COLOR_BGR2GRAY)

if equalizeHistogram == True:
    image = np.uint8(cv2.normalize(unprocessedImage, None, 0, 255, cv2.NORM_MINMAX))

elif calculateEdges == False and equalizeHistogram == False:
    image = unprocessedImage

im.set_data(image)

我可以使用“ a”和“ d”键更改图像(以及因此显示的图像)的索引。由于我使用set_data(),因此缩放级别保持应有的水平。

但是,当我按“ h”键使直方图相等时,它会再次缩小吗? 我很困惑,因为我唯一要更改的是'image'变量,当我循环浏览图片时也会更改。

那为什么为什么使用set_data()不会更改一个实例的缩放,却会更改另一个实例的缩放?

我将非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

回答关于同一主题(https://stackoverflow.com/a/63169926/8837809)的问题:

与'a'和'd'不同,键'h'是matplotlib的interactive navigation键的一部分。

为了避免此问题,请使用其他键映射交互式导航:

import matplotlib as mpl

mpl.rcParams["keymap.home"] = ['r', 'home']   # default value is ['h', 'r', 'home']