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 窗口

如何在openCV的全屏无边框窗口中显示图像

如果有人知道如何修复 Mac 的错误,我可以继续重建库。或者,如果我做错了什么,请告诉我。谢谢!

4

2 回答 2

1

我想关键是要使图像大小适应真正的 macbook 屏幕分辨率。1800x2880 可能不是您当前采用的那个。

  1. 在System Preferences -> Display -> Scaled找到你的 macbook 的显示分辨率
  2. 使用 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()
    
于 2017-01-09T09:22:04.680 回答
0

这些链接中的问题不是边框的存在,而是由于某种原因窗口的背景显示出来。据我了解,OpenCV 的 namedWindow 实际上创建了一个两个窗口,一个在另一个内部。“白线”实际上是父窗口的灰色背景。您可能在 OSX 中遇到同样的问题,因为 openCV 以这种方式创建窗口。

我通过Windows API更改父窗口的背景颜色在Windows中解决了它,也许你可以在OSX中尝试类似的东西。

于 2016-07-21T04:00:49.140 回答