在OpenCV中實現YUV420sp2RGB

2021-08-03 18:19:37 字數 1984 閱讀 8559

使用opencv內部函式cvcvtcolor

(對應opencv2函式名為cvtcolor

)可方便地實現rgb與yuv420兩種格式之間的相互轉換。但在轉換過程中,我們需要關心yuv420的內部資料結構,

對於一張width×height的彩色來說,它的資料大小為width×height×1.5,其中前面width×height的空間為每個畫素點的灰度資訊,後面width×height

/2的空間,儲存的是每個點的色度資訊,之所以占用空間這麼少,是壓縮的結果。知道了這一點,在進行rgb與

yuv420的格式轉換時,就不會出現空間分配錯誤的情況了。

#include #include int main()

#include #include using namespace cv;

int main()

筆者所使用的opencv版本為opencv2.4.10,不同版本,opencv2標頭檔案位置可能會有差異。

#include #include #include using namespace std;

#define width 720

#define height 576

int main()

unsigned char* prgb = (unsigned char*)malloc(width * height * 1.5);

fread(prgb, 1, width * height * 1.5, readfile);

// 如果不是從檔案中讀取yuv資料,從這裡開始看

iplimage* img = cvcreateimageheader(cvsize(width, height * 1.5), ipl_depth_8u, 1);

cvsetdata(img, prgb, width);

iplimage* dst = cvcreateimage(cvsize(width, height), ipl_depth_8u, 3);

cvcvtcolor(img, dst, cv_yuv420sp2rgb);

cvshowimage("result", dst);

cvwaitkey(0);

free(prgb);

cvreleaseimageheader(&img);

cvreleaseimage(&dst);

return 0;

}

#include #include #include using namespace std;

using namespace cv;

#define width 720

#define height 576

int main()

unsigned char* prgb = (unsigned char*)malloc(width * height * 1.5);

fread(prgb, 1, width * height * 1.5, readfile);

mat src(height * 1.5, width, cv_8uc1), dst; // 如果不是從檔案中讀取yuv資料,從這裡開始看

memcpy(src.data, prgb, width * height * 1.5);

cvtcolor(src, dst, cv_yuv420sp2rgb);

imshow("result", dst);

waitkey(0);

free(prgb);

return 0;

}

LSD在opencv中的實現

lsd演算法是一種直線檢測的演算法,比hough效果好,作者將 和文章上傳了,詳見 opencv3.0也整合了其演算法,這邊說下如何在opencv裡面呼叫。下面 其實也是opencv給的example 可以在 include include include opencv2 core core.hpp...

opencv在visual studio中配置

f program files opencv2.4.4 opencv build include f program files opencv2.4.4 opencv build include opencv f program files opencv2.4.4 opencv build incl...

在pycharm中安裝opencv

這裡會有乙個坑,注意選擇跟自己python相匹配的版本 檢視本機python的版本匹配哪些檔案 再輸入以下語句 import pip.internal print pip.internal.pep425tags.get supported 查詢得到 安裝opencv pip install open...