Tudna vki segíteni C++/openCV -vel kapcsolatban?
Program megvan.Menteni szeretnék 1 képet.(jobban mondva képeket bizonyos időközönként), de vh nem akar sikerülni.
cv::imwrite("C:\asd\Image %d.jpg",frame);
Azt szeretném tehát h:
if (vmi történik)
{
WebkameraKepenekRogzitese("xy fájlba\kep.jpg");
}
Ha 100x lefut akkor 100 kép legyen a mappába.Fontos, h az új kép ne írja felül a már meglévő képet.
(Már keresetem a googlen vmi megoldást, de túl bonyolult volt mind//vmi egyszerűt keresek.Pár sorosat// és méghozzá nem is működtek megfelelően.)
Két megoldás is van:
1. sprintf
2. stringstream
Az sprintf talán a legkönnyebb megoldás. fenntartasz egy rövid buffert (char buffer[256];) és egy iterációs változót (int it;) és minden mentésnél sprintf-el előállítasz egy fájlnevet ebbe a bufferbe. Gyakorlatilag ennyi az egész, úgy működik minta printf, csak egy bufferbe ír, nem az stdout-ra.
Ráadásul tudsz csinálni leading zero fájlneveket is, a következő formátumm stringgel:
"kep_%04d.jpg"
Például:
kep_0001.jpg
kep_0002.jpg
...
Köszi a segítséget!
if(CV_RETR_EXTERNAL==1)
{
char buffer[100];
int it;
it++ ;
it=sprintf(buffer,"C:\asd\Image %d.jpg");
}
Tehát ez így jó?(Mármint ami az if-en belül van.Mentene 1 képet)Vagy azt másoljam 1 az 1-be ami a linkben van?
Sajna most nem tudom kipróbálni...
C++ (és nem C) stílusú megoldás lehet:
#include <sstream>
...
// ezt valahova a loopon kívülre
int imageCount = 0;
...
if(CV_RETR_EXTERNAL == 1)
{
std::stringstream nameStream;
nameStream << "C:\asd\Image_" << imageCount++ << ".jpg";
WebkameraKepenekRogzitese(nameStream.str());
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!