2016-04-16 20 views
0

我正在開發一個程序,用於在python中剪切大型圖像中的圖像。但是,即使看到它們,我也遇到了問題。在OpenCV中使用大型(超過3000x3000)圖像,並且它們不適合我的屏幕

我正在使用的圖像可以超過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:name'WIDTH'未定義'」。我在哪裏添加寬度? – Rich

+0

@David根據屏幕大小自己指定'WIDTH'和'HEIGHT'。 – Suever

+0

好吧,明白了。現在工作正常,謝謝。 – Rich