Hoe te lezen in een videobestand als grijswaarden

Wanneer u in een afbeelding leest, is er een vlag die u kunt instellen op 0 om deze als grijstint te forceren.

cv::Mat img = cv::imread(file, 0);//keeps it grayscale

Is er een equivalent voor video's?

3

1 antwoord

Dat is niet het geval

U moet de frames opzoeken en deze zelf in grijswaarden converteren.

Using the C interface: https://stackoverflow.com/a/3444370/176769

Met de C ++ -interface:

VideoCapture cap(0);
if (!cap.isOpened())
{
   //print error msg
    return -1;
}

namedWindow("gray",1);

Mat frame;
Mat gray;
for(;;)
{
    cap >> frame;

    cvtColor(frame, gray, CV_BGR2GRAY);

    imshow("gray", gray);
    if(waitKey(30) >= 0) 
        break;
}

return 0;
5
toegevoegd
Bedankt voor de tip, gedaan.
toegevoegd de auteur karlphillip, de bron
Als u grijs buiten de voor scope declareert, samen met frame , voorkomt u de dure geheugentoewijzing en de toewijzing van deze grote afbeelding per frame. Oplossing die de moeite waard is om te stemmen.
toegevoegd de auteur Christian Rau, de bron