我正在与openCV一起使用matplotlib来绘制一些阈值化方法,并抛出以下无输出警告:
警告:QT_DEVICE_PIXEL_RATIO已过时。改为使用:
QT_AUTO_SCREEN_SCALE_FACTOR启用平台插件控制 每个屏幕的因素。 QT_SCREEN_SCALE_FACTORS设置每个屏幕 因素。 QT_SCALE_FACTOR设置应用程序的全球规模 因素。
我正在使用Ubuntu 19.04
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('gradient.jpg', 0)
_, th1 = cv.threshold(img, 50, 255, cv.THRESH_BINARY)
_, th2 = cv.threshold(img, 200, 255, cv.THRESH_BINARY_INV)
_, th3 = cv.threshold(img, 200, 255, cv.THRESH_TRUNC)
_, th4 = cv.threshold(img, 127, 255, cv.THRESH_TOZERO)
_, th5 = cv.threshold(img, 127, 255, cv.THRESH_TOZERO_INV)
titles = ['Original Image', 'BINARY', 'BINARY_INV', 'TRUNC', 'TOZERO', 'TOZERO_INV']
images = [img, th1, th2, th3, th4, th5]
for i in range(6):
plt.subplot(2, 3, i + 1), plt.imshow(images[i], 'gray')
plt.title(titles[i])
plt.xticks([]), plt.yticks([])
答案 0 :(得分:2)
警告是关于基础Qt库中的更改:
在Qt 5.4中,通过QT_DEVICE_PIXEL_RATIO环境变量引入了高DPI缩放的实验性实现,您可以将其设置为数字缩放因子或自动设置。在Qt 5.6中不推荐使用此变量。 (source)
由于这只是弃用,所以我不确定切换到较新的选项是否可以解决缺少输出窗口的问题。查看您对此提出的疑问。
但是要摆脱警告,在启动脚本时这应该在shell中起作用:
export QT_AUTO_SCREEN_SCALE_FACTOR=1;
python myscript.py;
有关详细信息,请参见:Qt Documentation: High DPI Displays。
答案 1 :(得分:2)
从anaconda提示符打开spyder时,我也得到了这个。我通过删除QT_DEVICE_PIXEL_RATIO环境和系统变量来解决该问题,然后重新启动了anaconda提示符。
答案 2 :(得分:2)
谢谢大家。对我来说,只有Elyte's answer才有用。要在python中使用它,可以使用:
ScrollView(.vertical, showsIndicators: false) {
Group {
if #available(iOS 14.0, *) {
// ... new content here
} else {
// ... old content here
}
}
}
答案 3 :(得分:2)
我使用与@elyte5star 相同的方法解决了这个问题。 在运行程序之前,在终端中运行以下命令:
export QT_DEVICE_PIXEL_RATIO=0
export QT_AUTO_SCREEN_SCALE_FACTOR=1
export QT_SCREEN_SCALE_FACTORS=1
export QT_SCALE_FACTOR=1
答案 4 :(得分:1)
请使用此解决方案!
export QT_DEVICE_PIXEL_RATIO=0
export QT_AUTO_SCREEN_SCALE_FACTOR=1
export QT_SCREEN_SCALE_FACTORS=1
export QT_SCALE_FACTOR=1
答案 5 :(得分:0)
您只需在代码末尾添加 cv.waitkey(0)。