Quantcast
Channel: OpenCV Q&A Forum - Latest question feed
Viewing all articles
Browse latest Browse all 19555

help me to read 10 bit YCbCr raw data from file

$
0
0
hello I'm not good very in english I want open a "10 bit YCbCr 4:2:2 frame" and show it in openCV frame size is: 720 * 576 my source code : void main (int argc, char ** argv) { streampos size; char *pData; ifstream file("C:\\639.bin", ios::in | ios::binary | ios::ate); Mat YUV(576, 720, CV_8UC3); Mat RGB(576,720, CV_8UC3); if (file.is_open()) { size = file.tellg(); pData = new char[size]; file.seekg(0, ios::beg); file.read(pData, size); file.close(); long k = 0; int n = 0; int Y, Cb, Cr; for (int i = 0; i < 576; i++) { n = 0; for (int j = 0; j < 1920; j += 16) { k = i * 1920 + j; Y=YUV.at>(Point(n, i))[0] = ((pData[k+1]&252)/4.0 + (pData[k + 2] & 15) * 64)/4.0; Cb =YUV.at>(Point(n, i))[1] = (pData[k] + (pData[k + 1] & 3) * 256) / 4.0; Cr =YUV.at>(Point(n, i))[2] = ((pData[k + 2] & 240) / 16 + (pData[k + 3] & 63) * 16) / 4.0; RGB.at>(Point(n, i))[0] = Y + 1.773*(Cb - 128); RGB.at>(Point(n, i))[1] = Y - 0.714*(Cr - 128)-0.344*(Cb-128); RGB.at>(Point(n, i))[2] = Y + 1.403*(Cr - 128); //------------------------------------------------------------------------------------------------------- Y=YUV.at>(Point(n + 1, i))[0] = (pData[k + 4] + (pData[k + 5] & 3) * 256)/4.0; Cb =YUV.at>(Point(n + 1, i))[1] = YUV.at>(Point(n, i))[1]; Cr =YUV.at>(Point(n + 1, i))[2] = YUV.at>(Point(n, i))[2]; RGB.at>(Point(n+1, i))[0] = Y + 1.773*(Cb - 128); RGB.at>(Point(n+1, i))[1] = Y - 0.714*(Cr - 128) - 0.344*(Cb - 128); RGB.at>(Point(n+1, i))[2] = Y + 1.403*(Cr - 128); //-------------------------------------------------------------------------------------------------------- Y=YUV.at>(Point(n + 2, i))[0] = ((pData[k + 6] & 240) / 16 + (pData[k + 7] & 63) * 16)/4.0; Cb =YUV.at>(Point(n + 2, i))[1] = ((pData[k + 5] & 252) / 4 + (pData[k + 6] & 15) * 64) / 4.0; Cr =YUV.at>(Point(n + 2, i))[2] = (pData[k + 8] + (pData[k + 9] & 3) * 256) / 4.0; RGB.at>(Point(n+2, i))[0] = Y + 1.773*(Cb - 128); RGB.at>(Point(n+2, i))[1] = Y - 0.714*(Cr - 128) - 0.344*(Cb - 128); RGB.at>(Point(n+2, i))[2] = Y + 1.403*(Cr - 128); //-------------------------------------------------------------------------------------------------------- Y=YUV.at>(Point(n + 3, i))[0] = ((pData[k + 9] & 252) / 4 + (pData[k + 10] & 15) * 64)/4.0; Cb =YUV.at>(Point(n + 3, i))[1] = YUV.at>(Point(n + 2, i))[1]; Cr =YUV.at>(Point(n + 3, i))[2] = YUV.at>(Point(n + 2, i))[2]; RGB.at>(Point(n+3, i))[0] = Y + 1.773*(Cb - 128); RGB.at>(Point(n+3, i))[1] = Y - 0.714*(Cr - 128) - 0.344*(Cb - 128); RGB.at>(Point(n+3, i))[2] = Y + 1.403*(Cr - 128); //-------------------------------------------------------------------------------------------------------- Y=YUV.at>(Point(n + 4, i))[0] = (pData[k + 12] + (pData[k + 13] & 3) * 256)/4.0; Cb =YUV.at>(Point(n + 4, i))[1] = ((pData[k + 10] & 240) / 16 + (pData[k + 11] & 63) * 16) / 4.0; Cr = YUV.at>(Point(n + 4, i))[2] = ((pData[k + 13] & 252) / 4 + (pData[k + 14] & 15) * 64) / 4.0; RGB.at>(Point(n+4, i))[0] = Y + 1.773*(Cb - 128); RGB.at>(Point(n+4, i))[1] = Y - 0.714*(Cr - 128) - 0.344*(Cb - 128); RGB.at>(Point(n+4, i))[2] = Y + 1.403*(Cr - 128); //--------------------------------------------------------------------------------------------------------- Y=YUV.at>(Point(n + 5, i))[0] = ((pData[k + 14] & 240) / 16 + (pData[k + 15] & 63) * 16)/4.0; Cb = YUV.at>(Point(n + 5, i))[1] = YUV.at>(Point(n + 4, i))[1]; Cr = YUV.at>(Point(n + 5, i))[2] = YUV.at>(Point(n + 4, i))[2]; RGB.at>(Point(n+5, i))[0] = Y + 1.773*(Cb - 128); RGB.at>(Point(n+5, i))[1] = Y - 0.714*(Cr - 128) - 0.344*(Cb - 128); RGB.at>(Point(n+5, i))[2] = Y + 1.403*(Cr - 128); //--------------------------------------------------------------------------------------------------------- n = n + 6; } } cvtColor(YUV, RGB, CV_YUV2RGB); imwrite("C:\\1.jpg", RGB); namedWindow("1"); imshow("1", RGB); waitKey(0); } } after run source code following image is shown: ![image description](/upfiles/1469730517810816.jpg) but orginal frame is: ![image description](/upfiles/14697308883731364.jpg) this frame captured from Intensity DeckLink Black MagicDesign Capture Card and Pixel Format is: ![image description](/upfiles/14697312372901575.jpg) please help for solve this problem thanks

Viewing all articles
Browse latest Browse all 19555

Latest Images

Trending Articles

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>