Pycharm 使用 OpenCV 和 Python3.9 在 macOS "Big Sur" 上不显示图像预览

Pycharm does not show image preview on macOS "Big Sur" using OpenCV and Python3.9

我正在尝试在 macOS 'Big Sur' 和 Pycharm 上使用 OpenCV 和 python 编写人脸识别应用程序代码,但不幸的是它没有显示图像 window/preview它在控制台中没有显示任何错误,您可以在下面检查代码:

import cv2

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

img = cv2.imread('news.jpg')

gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

face = face_cascade.detectMultiScale(gray_img,
                                     scaleFactor=1.05, minNeighbors=5)

for x, y, w, h in face:
    img = cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 3)

resized = cv2.resize(img, (int(img.shape[1]/3), int(img.shape[0]/3)))

# cv2.startWindowThread()
# cv2.namedWindow("preview")
cv2.imshow('preview', img)
cv2.waitKey(0)
cv2.destroyWindow('preview')

我尝试添加 cv2.startWindowThread()、cv2.namedWindow("preview") 甚至通过“pip3 install opencv-python-headless”安装无头,但它不起作用.

看来问题与macOS“Big Sur”框架系统有关,

问题可以通过以下方式解决: 1-删除我为这个特定项目创建的 python env 2-完全删除“家酿” 3- 使用 python-3.9、OpenCV 和“pip3 install opencv-python-headless”创建了一个新的 python3-env,并且有效。

替换行face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

face_cascade = cv2.CascadeClassifier(cv2.data.haarcascade + 'haarcascade_frontalface_default.xml')

然后它应该可以正常工作

这是最终代码:

import cv2

face_cascade = cv2.CascadeClassifier(cv2.data.haarcascade + 'haarcascade_frontalface_default.xml')

img = cv2.imread('news.jpg')

gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

face = face_cascade.detectMultiScale(gray_img,
                                     scaleFactor=1.05, minNeighbors=5)

for x, y, w, h in face:
    img = cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 3)

resized = cv2.resize(img, (int(img.shape[1]/3), int(img.shape[0]/3)))

# cv2.startWindowThread()
# cv2.namedWindow("preview")
cv2.imshow('preview', img)
cv2.waitKey(0)
cv2.destroyWindow('preview')