Visual Studio, OpenCV, Python - нет веб-камеры в приложении - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь работать с Visual Studio (и кодом Visual Studio) в Python с библиотекой OpenCV.

Я хочу запустить этот код из примеров OpenCV, которые показывают живое видео с моей веб-камеры:

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()

    # Display the resulting frame
    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

Но я получаю исключение в строке cv2.imshow('frame',frame), которое говорит:

cv2.error: OpenCV (3.4.3) C: \ projects \ opencv-python \ opencv \ modules \ highgui\ src \ window.cpp: 356: ошибка: (-215: подтверждение не выполнено) size.width> 0 && size.height> 0 в функции 'cv :: imshow'

Я установил OpenCV с помощьюpip install opencv-python из командной строки

Я получаю ту же ошибку, когда работаю над Visual Studio 2017 или кодом Visual Studio.

Я проверил конфиденциальность своей веб-камеры, она видна всем моим приложениям.

С ноутбуком Jupyter я могу отлично выполнить этот код.

Знаете ли вы, почему я не могу получить доступ к своей веб-камере из VS, но в ноутбуке Jupyter я могу сделать это без проблем?

РЕДАКТИРОВАТЬ 1

Когда яустановите

cap = cv2.VideoCapture(0) index в -1 code compile, но я получаю черный вывод.Как я уже говорил, в Jupyter я могу получить доступ к своей веб-камере на своем ноутбуке.Я использую Windows 10

EDIT2

Когда я добавляю эту строку перед imshow():

    if ret:
        print("error")
        continue

, я всегда получаю вывод error в моей командной строке.Даже если я подожду некоторое время, он все еще печатает «ошибку».Как я уже говорил пару раз, в ноутбуке Jupyter я могу запустить свою веб-камеру с кодом выше

1 Ответ

0 голосов
/ 26 сентября 2018

Полагаю, вы захотите снять отступ с блока

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

Пока что он вложен в цикл while (True), что приводит к преждевременному освобождению захвата и приводит к ошибке чтения.Помните, в Python отступы действительно имеют значение.

...