使用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...