我使用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()不会更改一个实例的缩放,却会更改另一个实例的缩放?
我将非常感谢您的帮助!
答案 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']