小白學習音視頻(四)源碼編譯OpenCV

小白學習音視頻(四)源碼編譯OpenCV

image

關注微信號:cpp手藝人,獲取更多文章

1.源碼下載,OpenCV的源碼放在github上面了。

git clone https://github.com/opencv/opencv

但是我用的不是最新的源碼編譯的,我用的是3.3.1編譯。

2.使用cmake生成vs2013 解決方案。

我這裏使用的cmake版本是cmake-3.17.2-win64-x64,大家可以根據需要自己在cmake的官網
自行下載,下載地址:https://cmake.org/download/

2.1 cmake操作步驟

點擊Configure的時候,會出現讓你選擇編譯的VS版本,你要選擇的你機器上安裝的vs版本,因爲我第一次的時候就已經選過vs2013,這裏就不會在提示我。

image

圖1

在搜索框輸入world,如下所示,也一併勾選上。

image

圖2

2.2 打開VS2013 解決方案

在解決方案中,我們編譯下整個解決方案。
在編譯的過程中會出現如下的錯誤。

image

圖3

解決辦法:
image

圖4

到這裏OpenCV編譯已經結束了

3.測試OpenCV demo

3.1 編譯成功的文件

編譯成功之後,生成的庫文件和dll文件分別如下路徑,注意要替換成你自己的路徑。這裏給你展示的是debug的路徑,帶d的後綴表示debug版本。

image

圖5

image

圖6

3.2 測試

3.2.1 我們把OpenCV的頭文件和編譯的lib和dll放到自己的項目中

image

圖7

image

圖8

image

圖9

3.2.2 測試代碼

void showimage()
{
    Mat image = imread("wechat_web.png");
    namedWindow("img");
    
    imshow("img", image);
    waitKey(0);
}

void padding_rgb()
{
    Mat mat(800, 600, CV_8UC3);

    // 元素字節數大小
    int es = mat.elemSize();
    int size = mat.rows*mat.cols*es;

    // 地址遍歷連續的Mat
    for (int i = 0; i < size; i += es) {
        mat.data[i] = 255; // B
        mat.data[i+1] = 100; // G
        mat.data[i+2] = 100; // R
    }

    namedWindow("mat");
    imshow("mat", mat);
    waitKey(0);
}

int main(int argc, char *argv[])
{
    // showimage();

    padding_rgb();
    return 0;
}

效果圖如下

image

圖10

image

圖11

到這裏,OpenCV源碼編譯和測試demo已經完成。下一節使用OpenCV獲取攝像頭和使用FFmpeg推流

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章