2016-04-16 7 views
0

Я разрабатываю программу, чтобы вырезать лица из больших изображений в python. Тем не менее, у меня проблема, даже видя их.Работа с большими (более 3000x3000) изображениями в OpenCV, и они не помещаются на моем экране

Изображения, с которыми я работаю, могут быть выше 2000x2000, и они не подходят на моем экране. Это код:

import cv2 
import sys 

# Get user supplied values 
imagePath = sys.argv[1] 
cascPath = sys.argv[2] 

# Create the haar cascade 
faceCascade = cv2.CascadeClassifier(cascPath) 

# Read the image 
image = cv2.imread(imagePath) 
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 

# Detect faces in the image 
faces = faceCascade.detectMultiScale(
    gray, 
    scaleFactor=1.2, 
    minNeighbors=5, 
    minSize=(100, 100), 
    flags = cv2.cv.CV_HAAR_SCALE_IMAGE 
) 

print "Found {0} faces!".format(len(faces)) 

# Draw a rectangle around the faces 
for (x, y, w, h) in faces: 
    cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2) 


cv2.NamedWindow(name, flags=WINDOW_NORMAL) 
cv2.imshow("Faces found", image) 
cv2.waitKey(0) 

И это часть меня интересует:

cv2.NamedWindow(name, flags=WINDOW_NORMAL) 
cv2.imshow("Faces found", image) 
cv2.waitKey(0) 

Теперь документация OpenCV имеет instructions о том, как изменить размер окна, но до сих пор я получаю ошибки:

Ошибка 1:

Found 2 faces! 
Traceback (most recent call last): 
    File "face_detect.py", line 31, in <module> 
    cv2.NamedWindow(name, flags=WINDOW_NORMAL) 
AttributeError: 'module' object has no attribute 'NamedWindow' 

Ошибка 2:

Found 2 faces! 
Traceback (most recent call last): 
    File "face_detect.py", line 31, in <module> 
    cv2.namedWindow("", WINDOW_NORMAL) 

NameError: name 'WINDOW_NORMAL' is not defined 

Ошибка 3:

File "face_detect.py", line 31 
    cv2.namedWindow(winname[, WINDOW_NORMAL]) 
          ^
SyntaxError: invalid syntax 

Может кто-нибудь показать мне, что я делаю неправильно?

+0

Возможно, стоит попытаться переустановить пакет с помощью 'sudo apt-get install python-opencv' ... :) – filaton

+2

@filaton Это немного радикальное исправление для нескольких опечаток. – Suever

+0

@Suever Право! :) Но я помню некоторые случаи, когда OpenCV выбрасывал одно и то же исключение, когда он не был установлен должным образом, поэтому я сказал, что это может стоить. – filaton

ответ

5

Вы неверно напечатали cv2.NamedWindow вместо cv2.namedWindow, обратите внимание на корпус. Также WINDOW_NORMAL должно быть cv2.WINDOW_NORMAL. Затем вы можете использовать cv2.resizeWindow для установки нужного размера.

# Specify an appropriate WIDTH and HEIGHT for your machine 
WIDTH = 1000 
HEIGHT = 1000 

cv2.namedWindow('image', cv2.WINDOW_NORMAL) 
cv2.imshow('image', image) 
cv2.resizeWindow('image', WIDTH, HEIGHT) 

В качестве примечания, когда в документации используется следующий формат

cv2.namedWindow(winname[, flags]) 

[] означает, что flags является позиционной вход опционально. Это недействительный синтаксис Python и поэтому не может быть скопирован/вставлен в ваш код.

+0

Это дало мне: «NameError: имя« WIDTH »не определено». Где я могу добавить ширину? – Rich

+0

@David Вы определяете 'WIDTH' и' HEIGHT' самостоятельно в зависимости от размера вашего экрана. – Suever

+0

ОК, понял. Спасибо, спасибо. – Rich

 Смежные вопросы

  • Нет связанных вопросов^_^