讀取yuv資料並做光流法處理

2021-07-03 11:06:29 字數 2188 閱讀 7686

* 本程式讀取yuv資料,呼叫 cv::cvtcolor(yuvimg, frame, cv_yuv2bgr_i420)

* 將yuv資料轉化為opencv能夠讀取的 mat 格式資料,然後做光流法處理

#include #include #include #include #include #include #include #include "pa.h"

#include "gf_feature.h";

#include using namespace cv;

using namespace std;

#define unknown_flow_thresh 1e9

void makecolorwheel(vector&colorwheel)

void motiontocolor(mat flow, mat &color)

} for (int i= 0; i < flow.rows; ++i)

float rad = sqrt(fx * fx + fy * fy);

float angle = atan2(-fy, -fx) / cv_pi;

float fk = (angle + 1.0) / 2.0 * (colorwheel.size()-1);

int k0 = (int)fk;

int k1 = (k0 + 1) % colorwheel.size();

float f = fk - k0;

//f = 0; // uncomment to see original color wheel

for (int b = 0; b < 3; b++)

} }

} const int width = 1280;

const int height = 720;

const int framesize = width * height * 3/2;

int main(int, char**)

fin.seekg(0, ios::end);

streampos ps = fin.tellg();

unsigned long numberpixel = ps;

cout << "file size:" << ps << endl;

unsigned framecount = ps / framesize;

cout << "framenumber: " << framecount;

fin.close();

mat prevgrayimage, grayimage, flow , frame, cflow; //cflow

mat motion2color;

file* filein = fopen("demo.yuv", "rb+");

unsigned char* pyuvbuf = new unsigned char[framesize];

namedwindow("孟塞爾顏色", 1);

//namedwindow("光流", 1);

int i;

for(i=0; i> frame;

// imshow("源影象", frame); //6-24

cvtcolor(frame, grayimage, cv_bgr2gray);

// imshow("灰度影象", grayimage);

if( prevgrayimage.data )

printf("\n");

motiontocolor(flow, motion2color);

imshow("孟塞爾顏色", motion2color);

//free(h_matdata);

free(h_graydata);

} if(waitkey(10)>=0)

break;

std::swap(prevgrayimage, grayimage);

t = (double)cvgettickcount() - t;

cout << "cost time: " << t / ((double)cvgettickfrequency()*1000.) << endl;

} fclose(filein);

return 0;

}

Python讀取YUV檔案,並顯示

opencv可以讀取的型別比較多,但大多是比較常見的型別,比如 jpg 和 png 但它不能直接讀取yuv格式的檔案,需要通過python讀取yuv檔案,並進行相應的轉換後,才能被opencv讀取,並進行後續相應的處理.話不多說,直接上程式.import cv2 from numpy import ...

Python讀取YUV檔案,並顯示的方法

python讀取yuv格式檔案,並使用opencv顯示的方法 opencv可以讀取的型別比較多,但大多是比較常見的型別,比如 jpg 和 png 但它不能直接讀取yuv格式的檔案,需要通過python讀取yuv檔案,並進行相應的轉換後,才能被opencv讀取,並進行後續相應的處理.話不多說,直接上程...

Go Readers讀取資料流

go語言的io包指定了io.reader介面。go語言標準庫包含了這個介面的許多實現,包括檔案 網路連線 壓縮 加密等等。io.reader介面有乙個read方法 func t read b byte n int,err error 在程式中,我們使用迴圈讀取資料流,直到error返回io.eof。...