Quelle fonction d'OpenCV prend en charge la caméra analogique pour la diffusion en direct?Quelle fonction d'OpenCV prend en charge la caméra analogique pour la diffusion en direct?
S'il vous plaît donnez-moi la réponse.
J'ai essayé les fonctions CvCapture et VideoCapture d'OpenCV. Fonctionne avec une caméra USB mais ne fonctionne pas avec une caméra analogique.
J'ai essayé la fonction VideoInput.Il fonctionne bien avec une caméra analogique, mais je veux une fonction intégrée. Alors s'il vous plaît aidez-moi. Merci pour votre temps.
C'est le code pour la fonction cvcapture que j'ai utilisé.
#include "stdafx.h"
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include "videoInput.h"
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
char key;
int main()
{
cvNamedWindow("Camera_Output", 1); //Create window
CvCapture* capture = cvCaptureFromCAM(CV_CAP_ANY); //Capture using any camera connected to your system
while(1){ //Create infinte loop for live streaming
IplImage* frame = cvQueryFrame(capture); //Create image frames from capture
cvShowImage("Camera_Output", frame); //Show image frames on created window
key = cvWaitKey(10); //Capture Keyboard stroke
if (char(key) == 27){
break; //If you hit ESC key loop will break.
}
}
cvReleaseCapture(&capture); //Release capture.
cvDestroyWindow("Camera_Output"); //Destroy Window
return 0;
}
fin du code
Code suivant utilise VIDEOINPUT fonction.
Le code est
#include "stdafx.h"
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include "videoInput.h"
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main(int, char**)
{
videoInput VI;
int numDevices = VI.listDevices();
//int device1= 0;
VI.setup(0);
unsigned char* yourBuffer = new unsigned char[VI.getSize(0)];
IplImage* colourImage = cvCreateImage(cvSize(320,240),8,3);
while(1)
{
VI.grabFrame(0, yourBuffer);
colourImage->imageData = (char*)yourBuffer;
cvConvertImage(colourImage, colourImage, 3);
cvShowImage("test",colourImage);
if(cvWaitKey(10) == 27)
break;
}
return 0;
}
fin du code
et dernier code utilise la fonction videocapture
le code est
#include "stdafx.h"
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include "videoInput.h"
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main() {
VideoCapture stream1(-1); //0 is the id of video device.0 if you have only one camera.
if (!stream1.isOpened()) { //check if video device has been initialised
cout << "cannot open camera";
return 0;
}
//unconditional loop
while (true) {
Mat cameraFrame;
stream1.read(cameraFrame);
imshow("cam", cameraFrame);
if (waitKey(30) >= 0)
break;
}
return 0;
}
fin du code
S'il vous plaît aidez-moi.
S'il vous plaît partager 1) Comment votre sortie de la caméra analogique est d'entrer dans votre ordinateur 2) Le code VIDEOINPUT qui fonctionne et 3) Un exemple de ce que vous avez essayé avec OpenCV qui tente de faire ce que vous voulez. – KobeJohn
En fait videoInput fonctionne bien avec une caméra analogique mais je veux utiliser Qt avec C++ pour l'interface graphique et j'ai donc eu l'erreur après avoir inclus le fichier videoInput.lib dans mon projet qt, c'est pourquoi je recherche la fonction intégrée d'OpenCV. Merci pour votre réponse. – user2865434
Bonne mise à jour. J'utilise opencv en python, donc je n'ai pas essayé votre code. Veuillez expliquer ce qui ne fonctionne pas dans les deux exemples OpenCV. – KobeJohn