简体   繁体   中英

OpenCV create YUV420 or grayscale Mat object from YUYV pixelformat video frame

I am trying to process video frames from a Qt application. The input from the QML Camera is of format YUYV and I could not set it to something else like YUV420 by default. I need to capture the frame and create a Mat object of YUV420 or grayscale format.

I have tried cvtColor with the following codes and they all crashed during runtime - COLOR_YUV2GRAY_YVY COLOR_YUV2RGB_YUYV COLOR_YUV2GRAY_YUYV

Any idea how I can do this?

So after playing around with the color conversion codes a bit this is the solution I found to be working for me.

cv::Mat img = cv::Mat(m_videoHeight, m_videoWidth, CV_8UC2, input->bits());
cv::Mat gray;
cv::cvtColor(img, gray, cv::COLOR_YUV2GRAY_YVYU);

This converts the given YUYV Mat object - img to a grayscale Mat object - gray. input->bits() refers to the first bit of the video frame buffer.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM