使用OpenCV中的大型(超过3000x3000)图像,它们不适合我的屏幕

Ric*_*ich 1 python opencv high-resolution python-2.7

我正在开发一个程序,用python中的大图像切割面部.但是,即使看到它们,我也遇到了问题.

我正在使用的图像可能超过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)
Run Code Online (Sandbox Code Playgroud)

这是我关心的部分:

cv2.NamedWindow(name, flags=WINDOW_NORMAL)
cv2.imshow("Faces found", image)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)

现在,OpenCV的文档中有说明如何改变窗口大小,但到目前为止,我不断收到错误:

错误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'
Run Code Online (Sandbox Code Playgroud)

错误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
Run Code Online (Sandbox Code Playgroud)

错误3:

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

任何人都可以告诉我我做错了什么吗?

Sue*_*ver 6

你有错误的打字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)
Run Code Online (Sandbox Code Playgroud)

作为旁注,当文档使用以下格式时

cv2.namedWindow(winname[, flags])
Run Code Online (Sandbox Code Playgroud)

作为可选位置输入的[]平均值.它不是有效的Python语法,因此无法复制/粘贴到您的代码中.flags