J'ai essayé la fonction que tu as donnée, mais j'ai maintenant une erreur de compilation :
||=== sfml2, Debug ===|
C:\Users\Anthony\Prog\sfml2\Video.cpp||In member function 'void Video::Play()':|
C:\Users\Anthony\Prog\sfml2\Video.cpp|82|error: invalid conversion from 'char*' to 'const sf::Uint8*'|
C:\Users\Anthony\Prog\sfml2\Video.cpp|82|error: initializing argument 1 of 'void sf::Texture::update(const sf::Uint8*)'|
||=== Build finished: 2 errors ===|
edit : j'ai tenté le cast en remaplcant ta fonction par tex.update((sf::Uint8*)img->imageData);
Mais l'image reste toujours noire. j'ai vérifié que ca ne venait pas d'OpenCV, car je sauvegarde a chaque fois l'image courante, et elle est bonne
edit2 : Pour le sprite, je sais pas pk j'avais fait ca, j'ai changé ca, je l'ai remplacé par un simple srite->SetTexture(tex);
Et j'ai également créé une deuxieme image IplImage avec un format 32bits, j'ai convertit le frame capturé, afin d'être sur que le format respecte ce que tu m'as dit, mais l'image reste toujours noire
img = cvRetrieveFrame( capture );
resizedImg = cvCreateImage(cvSize(img->width, img->height), 32, img->nChannels);
// Tant qu'on n'a pas appuyé sur Q, on continue :
while(key != 'q')
{
sf::Event event;
while (window->pollEvent(event))
{
if ((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Q))
key = 'q';
}
temps = clock.getElapsedTime().asMilliseconds();
if(temps>next)
{
next += delay;
img = cvRetrieveFrame( capture );
cvConvertScale(img, resizedImg);
// Cette fonction me permet de sauvegarder l'image pour vérifier qu'elle soit bonne à la base
cvSaveImage("test.jpg", resizedImg);
tex.update((sf::Uint8*)resizedImg->imageData);
sprite->setTexture(tex);
if(!cvGrabFrame( capture ))
key = 'q';
}
window->clear();
window->draw(*sprite);
window->display();
}