激情综合丁香-激情综合六月-激情综合婷婷亚洲图片-激情综合图区-激情综合网五月

英創(chuàng)Linux主板支持OpenCV

 2022-8-19     作者:黃志超         

OpenCV(Open Source Computer Vision Library)是一個(gè)跨平臺(tái)的計(jì)算機(jī)視覺(jué)開源庫(kù),其中包含了數(shù)百種計(jì)算機(jī)視覺(jué)算法。因此OpenCV提供的功能十分豐富,從圖像處理(比如圖片格式的轉(zhuǎn)換),到計(jì)算機(jī)視覺(jué)(比如動(dòng)作識(shí)別,人臉識(shí)別等),都可以通過(guò)OpenCV來(lái)實(shí)現(xiàn)。所以O(shè)penCV在各個(gè)領(lǐng)域中都有較廣泛的應(yīng)用,更加詳細(xì)的說(shuō)明可以參考OpenCV的中文網(wǎng)站http://www.opencv.org.cn/


英創(chuàng)公司在Linux主板中移植了OpenCV,能夠支持的主板有ESM6800E/H,ESM7000,ESM6802以及ESM8000系列的主板。其中ESM6800E/H和ESM7000系列主板中沒(méi)有GPU和VPU,所以比較適合進(jìn)行圖像的處理,比如圖片的分割、格式轉(zhuǎn)化等。而ESM6802與ESM8000系列主板帶有GPU與VPU,可以做一些簡(jiǎn)單的視頻方面的處理,比如人臉偵測(cè)、動(dòng)作識(shí)別等。具體可以參考下面的表格:

主板型號(hào)CPU性能GPUVPUOpenCV版本支持語(yǔ)言推薦應(yīng)用
ESM6800E/H

Crotex-A7 主頻798MHz

3.2C++可以用于圖像處理
ESM6802系列

雙核Crotex-A 主頻1GHz

3.2C++可以用于簡(jiǎn)單的視頻處理
ESM7000系列

雙核Crotex-A 主頻1GHz

3.2C++可以用于圖像處理
ESM8000系列

四核64位Crotex-A53 主頻1.6GHz

4.2

  C++/python3

可以用于簡(jiǎn)單的視頻處理


關(guān)于圖像處理,可以通過(guò)調(diào)用OpenCV提供的API來(lái)實(shí)現(xiàn),比較簡(jiǎn)單。而在視頻的處理上,主板中OpenCV的視頻操作都是基于Gstreamer來(lái)實(shí)現(xiàn)的,具體可以參考下圖:

image.png


從圖中可以看出,OpenCV的提供的Video I/O可以基于多種Backends,而主板中的Backends支持的是Gstreamer。因?yàn)镚streamer中已經(jīng)包含了可以調(diào)用GPU和VPU的插件,對(duì)用戶來(lái)說(shuō)就可以不必關(guān)心如何去調(diào)用GPU與VPU,只需要做上層的應(yīng)用開發(fā),使用起來(lái)會(huì)更加簡(jiǎn)單。因?yàn)镺penCV的跨平臺(tái)性,而基于Opencv實(shí)現(xiàn)的一些開源算法,比如人臉識(shí)別,動(dòng)作識(shí)別等,都可以直接移植到主板上使用。


最后是關(guān)于顯示界面的問(wèn)題,OpenCV中提供了顯示的API,在Linux主板中,調(diào)用顯示API后可以顯示出一個(gè)OpenCV的窗口(底層是基于Qt實(shí)現(xiàn)的)。但是對(duì)于用戶來(lái)說(shuō),通常情況下OpenCV只是其中一部分功能,在顯示界面上可能還需要顯示一些其他的數(shù)據(jù),這個(gè)時(shí)候就推薦客戶使用Qt+OpenCV的方式來(lái)實(shí)現(xiàn)。Qt實(shí)現(xiàn)基本的界面顯示,而OpenCV用于處理圖像或者視頻,處理好的數(shù)據(jù)再通過(guò)Qt的控件顯示出來(lái)。


我們以在ESM8000主板上顯示網(wǎng)絡(luò)攝像頭的畫面為例,來(lái)進(jìn)行演示。下面的代碼可以通過(guò)OpenCV提供的API實(shí)現(xiàn)一個(gè)窗口來(lái)顯示網(wǎng)絡(luò)攝像頭的畫面:

#include <opencv2/opencv.hpp>  
  
int main() {  
   cv::VideoCapture cap;  
   /* gstreamer 參數(shù) */  
   if (!cap.open("rtspsrc location=rtsp://user:passwd@ip:port/ latency=0 ! queue ! rtph264depay ! vpudec ! queue ! imxvideoconvert_g2d ! capsfilter caps=\"video/x-raw,format=(string)RGBA\" ! videoconvert ! queue ! appsink sync=false", cv::CAP_GSTREAMER)) {  
        std::cout << "Unable to open video capture\n";  
        return -1;  
    }  
   return 0; */  
  
    while(true) {  
        cv::Mat frame;  
  
        /* 獲取顯示數(shù)據(jù) */  
        auto ret = cap.grab();  
        cap >> frame;  
  
        if (frame.empty()) {  
            break; // End of video stream  
        }  
  
        cv::resize(frame, frame, cv::Size(640, 480));  
  
        // Do other stuff here with frame  
  
        /*  顯示 */  
        cv::imshow("frame", frame);  
  
        if (cv::waitKey(10) == 27) {  
            break; // stop capturing by pressing ESC  
        }  
    }  
  
    return 0;  
}


通過(guò)代碼可以看到,在調(diào)用cv::imshow("frame", frame)后,就會(huì)顯示一個(gè)窗口出來(lái)。但是這是OpenCV提供的顯示窗口,只會(huì)顯示視頻數(shù)據(jù),如果用戶需要顯示其他數(shù)據(jù),就不方便了。這個(gè)時(shí)候就可以選擇使用Qt的控件來(lái)顯示讀取到的frame,可以參考下面的代碼來(lái)替換cv::imshow("frame", frame)函數(shù):

/* 轉(zhuǎn)換格式 */   
cv::cvtColor(frame, frame, cv::COLOR_BGR2RGB);  
  
/* 通過(guò)Qt控件來(lái)顯示 */   
QPixmap pix = QPixmap::fromImage(QImage((unsigned char*) frame.data, frame.cols, frame.rows, QImage::Format_RGB888));  
label->setPixmap(pix);


上面的代碼中,將OpenCV讀取的數(shù)據(jù)通過(guò)一個(gè)label顯示出來(lái)。基于這種方式,用戶可以更加靈活地設(shè)計(jì)界面,然后指定一個(gè)控件用于顯示視頻數(shù)據(jù):

image.png


本文簡(jiǎn)單介紹了Linux主板對(duì)OpenCV的支持,感興趣的客戶可以通過(guò)聯(lián)系英創(chuàng)公司的工程師獲取更多的資料和例程。

主站蜘蛛池模板: 91看视频| 欧美视频中文字幕| 欧美色黄| 狠狠综合视频精品播放| 草草线在成人免费视频| 久久99精品这里精品3| 99久久精品无码一区二区毛片| 午夜两性网| 国内精品网站| 国产精品久久久久影院免费| 精品国产香蕉伊思人在线| 国产毛片久久精品| 久久免费香蕉视频| 日本hd高清xxxxvideos| 亚洲色图视频在线| 日本一级黄色| 亚洲一级片网站| 在线观看香蕉视频| 男人午夜免费视频| 欧美成人特黄级毛片| 国产一级特黄a大片99| 国产黄色片在线播放| 国产福利精品一区二区| 婷婷99视频精品全部在线观看| 1024手机在线观看| 99久久国语露脸精品对白| 久久精品这里精品| 日本a在线观看| 日本高清在线精品一区二区三区 | 亚洲欧美日韩中另类在线| 曰韩一级片| 亚洲成a人片在线播放观看国产| 国产91精品在线观看| 国产农村精品一级毛片视频| 看一级毛片国产一级毛片| 国产精品第一| 国产在线欧美日韩精品一区二区 | 国产图片一区| 精品在线观看一区| 日韩第一页| 日韩免费不卡视频|