我在Mac OSX 10.9上运行opencv 3.1.0和python 2.7,并希望在全屏显示黑色图像。我的屏幕分辨率是2880x1800。
但是,当我尝试这样做时,屏幕顶部会出现一个大的白色边框。
这是我的代码,请注意black.jpg是一张2880x1800的图像。
import cv2
img = cv2.imread("black.jpg")
cv2.namedWindow("window", cv2.WND_PROP_FULLSCREEN)
cv2.setWindowProperty("window",cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)
cv2.imshow("window", img)
while True:
key = cv2.waitKey(20)
#exit on ESC
if key == 27:
break
我还尝试使用以下代码手动创建黑色图像。
import cv2
import numpy as np
img = np.zeros((1800, 2880))
cv2.namedWindow("window", cv2.WND_PROP_FULLSCREEN)
cv2.setWindowProperty("window", cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)
cv2.imshow("window",img)
cv2.waitKey(0)
我调整了numpy数组的尺寸以使其更大但边框仍然存在。
进行一些研究我发现这可能是opencv的一个错误。但是,该解决方案仅适用于Windows操作系统,请参阅以下内容:
OpenCV window in fullscreen and without any borders
和
How to display an image in full screen borderless window in openCV
如果有人知道如何修复Mac的错误,我可以继续重建库。或者,如果我做错了什么,请告诉我。谢谢!
答案 0 :(得分:1)
我想关键是要将图像大小调整为REAL macbook屏幕分辨率。 1800x2880可能不是您目前采用的那种。
OpenCV代码
import cv2
def show_full_screen_image():
while True:
print 'loading images...'
img = cv2.imread('preferred_image.png')
# Note: 900x1440 is the resolution with my MBP
img = cv2.resize(img, (1440, 900), interpolation=cv2.INTER_CUBIC)
cv2.namedWindow("test", cv2.WND_PROP_FULLSCREEN)
cv2.setWindowProperty("test", cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
cv2.imshow("test", img)
key=cv2.waitKey(0)
if key==27: # ESC to exit
break
if __name__ == '__main__':
show_full_screen_image()
答案 1 :(得分:0)
这些链接中的问题不是边框的存在,而是由于某种原因显示窗口的背景。根据我的理解,OpenCV的名为Windows实际上创建了两个窗口,一个在另一个窗口内。 "白线"实际上是父窗口的灰色背景。您可能在OSX中遇到同样的问题,因为openCV以这种方式创建窗口。
我通过Windows API改变父窗口的背景颜色在Windows中解决了它,也许你可以在OSX中尝试类似的东西。