OpenCV在Mac上全屏显示图像,没有白色边框

时间:2016-05-05 06:01:09

标签: python macos opencv opencv3.0 opencv3.1

我在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的错误,我可以继续重建库。或者,如果我做错了什么,请告诉我。谢谢!

2 个答案:

答案 0 :(得分:1)

我想关键是要将图像大小调整为REAL macbook屏幕分辨率。 1800x2880可能不是您目前采用的那种。

  1. System Preferences -> Display -> Scaled
  2. 找出您的Macbook的显示分辨率
  3. 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中尝试类似的东西。