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

英創Linux主板支持OpenCV

 2022-8-19     作者:黃志超         

OpenCV(Open Source Computer Vision Library)是一個跨平臺的計算機視覺開源庫,其中包含了數百種計算機視覺算法。因此OpenCV提供的功能十分豐富,從圖像處理(比如圖片格式的轉換),到計算機視覺(比如動作識別,人臉識別等),都可以通過OpenCV來實現。所以OpenCV在各個領域中都有較廣泛的應用,更加詳細的說明可以參考OpenCV的中文網站http://www.opencv.org.cn/


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

主板型號CPU性能GPUVPUOpenCV版本支持語言推薦應用
ESM6800E/H

Crotex-A7 主頻798MHz

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

雙核Crotex-A 主頻1GHz

3.2C++可以用于簡單的視頻處理
ESM7000系列

雙核Crotex-A 主頻1GHz

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

四核64位Crotex-A53 主頻1.6GHz

4.2

  C++/python3

可以用于簡單的視頻處理


關于圖像處理,可以通過調用OpenCV提供的API來實現,比較簡單。而在視頻的處理上,主板中OpenCV的視頻操作都是基于Gstreamer來實現的,具體可以參考下圖:

image.png


從圖中可以看出,OpenCV的提供的Video I/O可以基于多種Backends,而主板中的Backends支持的是Gstreamer。因為Gstreamer中已經包含了可以調用GPU和VPU的插件,對用戶來說就可以不必關心如何去調用GPU與VPU,只需要做上層的應用開發,使用起來會更加簡單。因為OpenCV的跨平臺性,而基于Opencv實現的一些開源算法,比如人臉識別,動作識別等,都可以直接移植到主板上使用。


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


我們以在ESM8000主板上顯示網絡攝像頭的畫面為例,來進行演示。下面的代碼可以通過OpenCV提供的API實現一個窗口來顯示網絡攝像頭的畫面:

#include <opencv2/opencv.hpp>  
  
int main() {  
   cv::VideoCapture cap;  
   /* gstreamer 參數 */  
   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;  
  
        /* 獲取顯示數據 */  
        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;  
}


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

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


上面的代碼中,將OpenCV讀取的數據通過一個label顯示出來。基于這種方式,用戶可以更加靈活地設計界面,然后指定一個控件用于顯示視頻數據:

image.png


本文簡單介紹了Linux主板對OpenCV的支持,感興趣的客戶可以通過聯系英創公司的工程師獲取更多的資料和例程。

主站蜘蛛池模板: 日韩在线中文字幕| 久久免费精彩视频| 中文字幕色婷婷在线视频| 国产高清大尺度一区二区不卡 | 成人日韩在线| 午夜影院一区二区| 日韩一区三区| 欧美1024性视频| 黄色影院免费| 欧美成在线播放| 一级日本大片免费观看视频| 免费永久在线观看黄网| 看欧美的一级毛片| 国产婷婷综合丁香亚洲欧洲| 亚洲色图p| 天天拍夜夜操| 交在线观看网站视频| 国产精品秦先生手机在线| 国产首页| 久久不卡视频| 亚洲人成黄网在线观看| 99热久久这里只精品国产www| 亚洲伊人影院| 欧美最刺激好看的一级毛片| 黄色在线视频观看| 国产亚洲美女精品久久| 男女午夜特黄毛片免费| 亚洲综合套图| 久久精品精品| 日韩黄色成人| 男女强吻摸下面揉免费| 国产乱视频在线观看播放| 操操综合| 九九热亚洲精品综合视频| 亚洲欧美日韩中文高清一| 久久综合久久综合九色| 亚洲精品一二三四区| 欧美成人黄色片| 国产精品欧美亚洲区| 看久久| 美女任你躁免费视频|