Я пытаюсь закодировать приложение для распознавания лиц, используя OpenCV и python для macOS «Big Sur» и Pycharm, но, к сожалению, оно не показывает окно/предварительный просмотр изображения и не показывает никаких ошибок в консоли, ниже вы можете проверить код:
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", но это не работает.
опубликуйте копию вывода консоли при запуске вашего скрипта. добавьте print("hello world")
в конце вашей программы, чтобы убедиться, что вывод консоли действительно работает.
@ChristophRackwitz Я читал об этом, и в большинстве случаев установка HEADLESS полностью решает проблему, и в консоли ничего не отображается, никаких ошибок, никаких подсказок, абсолютно ничего. Я добавил оператор печати в разные места, и все они были распечатаны в консоли.
звучит как проблема, характерная для MacOS или даже Big Sur. ваш код работает на других платформах. можете ли вы проверить, работает ли код на предыдущих версиях только MacOS, только на python и на обоих?
@ChristophRackwitz Да, похоже, проблема связана с macOS, но, кажется, я уже решил ее.
Похоже, проблема связана с системой кадрирования macOS «Big Sur».
Проблема может быть решена путем: 1- удаление среды python, которую я создал для этого конкретного проекта. 2- удаление "браги" полностью 3- создал новый python3-env с python-3.9, OpenCV и «pip3 install opencv-python-headless», и это сработало.
Замените строку 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')
безголовый пакет определенно не покажет вам никакого графического интерфейса, потому что безголовый означает отсутствие графического интерфейса. эта проблема связана с Биг Сур?