Ich versucheOpenCV imshow Y aus YUV
zu extrahieren und AnzeigeY-Kanal von YUV umgewandelt Bild
Mein Code ist wie folgt:
Mat src, src_resized, src_gray;
src = imread("11.jpg", 1);
resize(src, src_resized, cvSize(400, 320));
cvtColor(src_resized, src_resized, cv::COLOR_BGR2RGB);
/*
I've tried both with and without the upper conversion
(mentioned here as bug
http://stackoverflow.com/questions/7954416/converting-yuv-into-bgr-or-rgb-in-opencv
in an opencv 2.4.* version - mine is 2.4.10)
*/
cvtColor(src_resized, src_gray, CV_RGB2YUV); //YCrCb
vector<Mat> yuv_planes(3);
split(src_gray,yuv_planes);
Mat g, fin_img;
g = Mat::zeros(Size(src_gray.cols, src_gray.rows),0);
// same result withg = Mat::zeros(Size(src_gray.cols, src_gray.rows), CV_8UC1);
vector<Mat> channels;
channels.push_back(yuv_planes[0]);
channels.push_back(g);
channels.push_back(g);
merge(channels, fin_img);
imshow("Y ", fin_img);
waitKey(0);
return 0;
Als Ergebnis Ich erwartete ein Grau Bild zeigt Lumineszenz.
Stattdessen werde ich ein B/G/R-Kanal-Bild in Abhängigkeit von der Position des (ersten/zweiten/dritten)
channels.push_back(yuv_planes[0]);
Was bin ich? (Ich plane, die Luminanz zu verwenden, um eine Summe von Zeilen/Spalten zu erstellen und das Nummernschild später unter Verwendung der erhaltenen Daten zu extrahieren)
Könnten Sie bitte, Sie Code in einer vernünftigen Art und Weise einrücken? –
"Stattdessen erhalte ich ein B/G/R-Kanalbild" - aber Sie erstellen explizit ein 3-Kanal-Bild, bei dem Sie einen Farbkanal auf Luminanz und die anderen 2 auf Null setzen. Was erwarten Sie sonst noch als eine rote, grüne oder blaue Farbe? Wenn Sie es in Graustufen haben wollen, haben Sie entweder ein einzelnes Kanalbild oder setzen alle 3 Komponenten von RGB auf die gleichen Werte. –
Nun, das war schrecklich dumm und einfach. Danke vielmals. – Whatever