В Java все находится в форме класса.
Если вы хотите использовать любой объект, тогда у вас есть две фазы:
Пример:
Object a;
a=new Object();
То же самое для концепции массива
Item i[]=new Item[5];
i[0]=new Item();
Если вы не дают секцию инициализации, тогда возникает NullpointerException
.
Используйте весь путь к файлу и используйте «\\» вместо «\» в пути к файлу xml.
Путь к файлу должен быть следующим:
face_cascade = cv2.CascadeClassifier('C:\\opencv\\build\\etc\\haarcascades\\haarcascade_frontalface_default.xml')
вместо:
cascade_fn = args.get('--cascade', "..\..\data\haarcascades\haarcascade_frontalface_alt.xml")
Файл XML отсутствует, вы можете получить файл из репозитория GitHub и поместить его в тот же каталог, что и ваш проект. Ссылка на папку на GitHub - здесь . Просто загрузите файл с именем haarcascade_frontalface_default.xml . Фактически, файл существует в вашей системе. Просто зайдите в папку сайтов пакетов вашей папки установки python и проверьте папку cv2 / data для файла
В OSX с установкой homebrew полный путь к папке opencv должен работать:
face_cascade = cv2.CascadeClassifier('/usr/local/Cellar/opencv/3.4.0_1/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('/usr/local/Cellar/opencv/3.4.0_1/share/OpenCV/haarcascades/haarcascade_eye.xml')
Позаботьтесь о номере версии в пути.
Ваш XML-файл не найден. Попробуйте использовать абсолютные пути, такие как:
/path/to/my/file (Mac, Linux)
C:\\path\\to\\my\\file (Windows)
Вероятно, face_cascade
пуст. Вы можете проверить, пуста ли переменная или нет, набрав следующую команду:
face_cascade.empty()
Если она пуста, вы получите True
, и это означает, что ваш файл недоступен по указанному вами пути. Попробуйте добавить полный путь к файлу xml следующим образом:
r'D:\folder Name\haarcascade_frontalface_default.xml'
Если вы используете Anaconda, вы должны добавить путь Anaconda.
new_path = 'C:/Users/.../Anaconda/Library/etc/haarcascades/'
face_cascade = cv2.CascadeClassifier(new_path + 'haarcascade_frontalface_default.xml')
Я запустил тот же код. Здесь есть две вещи. 1. Дайте весь путь к файлам .xml. 2. Дайте команду завершения нажатия клавиши в конце.
Добавьте этот блок кода в конец и запустите свой файл, работал для меня:
k = cv2.waitKey(0)
if k == 27: # wait for ESC key to exit
cv2.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to save and exit
cv2.imwrite('messigray.png',img)
cv2.destroyAllWindows()
Например, мой Код выглядел как
import numpy as np
import cv2
face_cascade = cv2.CascadeClassifier('C:\\opencv\\build\\etc\\haarcascades\\haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('C:\\opencv\\build\\etc\\haarcascades\\haarcascade_eye.xml')
img = cv2.imread('lena.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
#faces = face_cascade.detectMultiScale(gray)
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
roi_gray = gray[y:y+h, x:x+w]
roi_color = img[y:y+h, x:x+w]
eyes = eye_cascade.detectMultiScale(roi_gray)
for (ex,ey,ew,eh) in eyes:
cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
cv2.imshow('img',img)
k = cv2.waitKey(0)
if k == 27: # wait for ESC key to exit
cv2.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to save and exit
cv2.imwrite('messigray.png',img)
cv2.destroyAllWindows()
Мой вывод выглядел как , введите описание изображения здесь
ошибка может возникнуть из-за того, что необходимые файлы xml не были загружены должным образом. Найдите файл haarcascade_frontalface_default.xml
с помощью поисковой системы ур-системы, получите полный путь и поместите его как аргумент cv2.CascadeClassifier
в качестве строки
Отсутствует XML или файл, или путь к нему неверен или путь create_capture неверен.
Пути в образце opencv выглядят следующим образом:
cascade_fn = args.get('--cascade', "../../data/haarcascades/haarcascade_frontalface_alt.xml")
nested_fn = args.get('--nested-cascade', "../../data/haarcascades/haarcascade_eye.xml")
cam = create_capture(video_src, fallback='synth:bg=../data/lena.jpg:noise=0.05')
Вы можете найти такие ошибки, если не определили полный путь к вашему XML-файлу. Попробуйте это, если вы используете opencv3.1.0 в raspberrypi 3: « faceCascade = cv2.CascadeClassifier ('/ home / pi / opencv-3.1.0 / data / haarcascades / haarcascade_frontalface_default.xml ')"