Échec de l'Assertion (de la taille.largeur>0 && size.hauteur>0)

Je suis à l'aide de Visual Studio Express 2013 avec OpenCV 2.4.7, à la suite de cette tutoriel.

J'ai passé des heures à chercher sur le web pour trouver des solutions, y compris toutes les questions pertinentes, AFIN d'. J'ai essayé:

  • la valeur de retour de VideoCapture::open est de 1
  • l'extension de la waitKey() retard à 50ms et plus tard 500ms
  • cadre aux dimensions de la fenêtre
  • la création d'un autre projet sur Visual C++
  • ouverture d'une image existante au lieu de la lecture de la caméra (même erreur)

mais pas de chance, s'il vous plaît aider!

Voici mon code:

#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <iostream>

using namespace std;
using namespace cv;

int main() {
    Mat image;

    VideoCapture cap;
    int camOpen = cap.open(CV_CAP_ANY);

    namedWindow("window", CV_WINDOW_AUTOSIZE);

    while (true) {
        cap >> image;

        imshow("window", image);

    //delay 33ms
    waitKey(33);        
    }

}

Comme je l'ai compilé et exécuté, j'ai eu l'erreur suivante:

OpenCV Erreur: échec de l'Assertion (de la taille.largeur>0 && size.hauteur>0) en cv::imshow, fichier ........\opencv\modules\highgui\src\window.cpp ligne 261

Erreur se produit à la ligne imshow("window", image);. Lorsque j'ai fait remarquer, il n'y a pas de plaintes.


MISES à jour:

Une plausible explication sur les raisons de cette erreur est que ma webcam prend du temps à démarrer, c'est pourquoi l'image.empty() est fidèle à l'origine, d'où le abort() la fonction a été appelée à quitter le programme.

Avec le code

if (!image.empty()) {
    imshow("window", image);
}

nous pouvons attendre que l'appareil photo pour démarrer

De ne pas être à cheval ou quoi que ce soit, mais si vous mettez namedWindow("xyz", CV_WINDOW_AUTOSIZE), il sera beaucoup plus facile pour vous (et, plus tard, d'autres) de lire et de suivre.. Venir à vous question, on pourrait mettre des points d'arrêt après chaque ligne et de me dire exactement où le problème se produit..?
édité question comme demandé, laissez-moi savoir si toute autre information supplémentaire serait utile
avait mis "xyz" comme un exemple. Pour cet exemple, vous devez mettre "fenêtre" (t) est le nom de la fenêtre et, partant, doit être la même dans namedWindow et imshow.
Vérifiez les paramètres de votre webcam , si elle fonctionne . Si vous utilisez Skype ou tout autre logiciel de la webcam, de vérifier s'il fonctionne .

OriginalL'auteur John Yeung | 2013-12-29