chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenCV的基礎(chǔ)使用方法及運(yùn)行成果

恩智浦MCU加油站 ? 來源:恩智浦MCU加油站 ? 作者:恩智浦MCU加油站 ? 2022-11-17 09:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本期將帶大家?guī)硪黄诳梢苑Q作番外篇的一期:暫且稱為OpenCV實(shí)戰(zhàn)篇,將介紹OpenCV的一些基礎(chǔ)使用方法,以及在MCU上實(shí)際運(yùn)行起來的效果。

首先是OpenCV的簡(jiǎn)單介紹,前面的文章已經(jīng)介紹過,OpenCV具有模塊化的結(jié)構(gòu),這意味著其中包含了多種共享/靜態(tài)庫,概括如下:

  • Core functionality:定義了所要用到的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)體

  • Image Processing:包含了多種線性/非線性的圖像濾波器,幾何圖像變換等

  • Video:視頻處理模塊,包括運(yùn)動(dòng)估計(jì),背景減除等

  • Calib3d:?jiǎn)文?雙目相機(jī)支持,3D重建等

  • Features2D:特征檢測(cè)

  • Objdetect:目標(biāo)檢測(cè)等,例如人臉、眼睛等

  • Highgui:簡(jiǎn)單的UI功能

  • Video I/O:視頻編解碼接口

  • Gpu:gpu加速算法

所有的OpenCV類/函數(shù)都被歸在cv命名空間下。因此,應(yīng)用層想要訪問任何代碼都需要使用cv::限定符或是直接使用using namespace cv,例如:

cv::Mat H = cv::findHomography(points1, points2, CV_RANSAC, 5);
或是:
using namespace cv;
Mat H = findHomography(points1, points2, CV_RANSAC, 5 );

同時(shí),由于當(dāng)前或是之后的OpenCV源碼中導(dǎo)出的外部符號(hào),可能會(huì)和STL或是其他庫中的名字沖突。這就建議用戶在使用時(shí),要顯示指定已避免沖突,例如:

Mat a(100, 100, CV_32F);
randu(a, Scalar::all(1), Scalar::rand()));
cv::log(a, a);
a /= std::log(2.);

接下來要講的是一個(gè)OpenCV中的重要結(jié)構(gòu)Mat。

如果你想要使用OpenCV的話,Mat是你無論如何躲不過的一步。通俗點(diǎn)講,這個(gè)結(jié)構(gòu)體代表了一種n維數(shù)組,并且能夠抽象表達(dá)成矩陣/圖像/光流圖等。

其公共屬性如下:

attribute

description

MatAllocator* allocator

Custom allocator

int cols

The image’s width

int rows

The image’s height, the cols & rows will be (-1, -1) when the matrix has more than 2 dimensions

uchar* data

Pointer to the data

uchar* dataend

-

uchar* datalimit

-

uchar* datastart

-

int dims

The matrix dimensionality, >=2

int flags

-

int* refcount

Pointer to the reference counter

MSize size

-

MSize step

-

作為一個(gè)名副其實(shí)的C++類,OpenCV為其編寫了多種構(gòu)造函數(shù),這也使得有多種方式能夠創(chuàng)建一個(gè)cv::Mat對(duì)象,用的比較多的幾種方式如下:

1.使用cv::Create(nrows, ncols, type) 或是 cv::Mat(nrows, ncols, type[, fill,_vale])如有雷同,那必然不是巧合。

// make 7x7 complex matrix filled with 1+3j.
cv::Mat M(7,7,CV_32FC2,Scalar(1,3));
// and now turn M to 100x60 15-channel 8-bit matrix.
// The old content will be deallocated
M.create(100,60,CV_8UC(15));

2.使用拷貝構(gòu)造函數(shù),時(shí)間復(fù)雜度為O(1),因?yàn)檫@種方式將只拷貝header并增加引用計(jì)數(shù),數(shù)據(jù)部分將公用,也稱作淺拷貝。當(dāng)然也可以使用深拷貝,cv::clone()可以做到這一點(diǎn)。

3.僅構(gòu)造頭部,并使用用戶預(yù)分配數(shù)據(jù):
void init_mat_with_ptr(const unsigned char* pixels,
                         int width, int height, int step)
{
    cv::Mat img(height, width, CV_8UC3, pixels, step);
    cv::GaussianBlur(img, img, cv::Size(7,7), 1.5, 1.5);
}

4.使用MATLAB格式的矩陣初始化法,cv::zeros(), cv::ones(), cv::eye()

5.對(duì)象與數(shù)據(jù)空間的釋放:cv::release()


了解了OpenCV的基礎(chǔ)知識(shí),下面是基于MCUXPresso的代碼實(shí)測(cè)部分。這里我們基于SDK中的“Hello World”工程搭建我們的第一個(gè)OpenCV代碼。小編先賣個(gè)關(guān)子,詳細(xì)的工程配置方法將在下期為大家揭秘。

首先,要選取測(cè)試圖,小編隨便在手機(jī)里找了一張圖片并裁成500*500的jpg圖像,之后會(huì)對(duì)其進(jìn)行解碼隨后將其放縮成(320, 240)。

為了方便我們?cè)跊]有文件系統(tǒng)的MCU平臺(tái)使用測(cè)試圖像,需要借助一條匯編指令.incbin, 并且聲明兩個(gè)全局符號(hào)告訴代碼數(shù)據(jù)位置:

  .global img_start
  .global img_end

img_start:
 .incbin "data/picture.jpg"
img_end:

接下來是main函數(shù):

// decode the image
std::vector data(img_start, img_start + IMG_LEN);
cv::Mat img_encode(data);
cv::Mat img = cv::imdecode(img_encode, cv::IMREAD_UNCHANGED);
// resize the decoded imagecv::Mat resizeImg;
cv::resize(img, resizeImg, cv::Size(320, 240), cv::INTER_LINEAR);

編譯下載后,讓我們看看轉(zhuǎn)出的數(shù)據(jù)是不是正確,我們就需要將數(shù)據(jù)傳輸?shù)?/span>PC上進(jìn)行驗(yàn)證:

1.在MCUXpresso IDE中添加一個(gè)memory窗口并且鍵入resizeImage.data:

fc0be33c-660f-11ed-8abf-dac502259ad0.png

2. 點(diǎn)擊Export,輸入起止地址,IDE會(huì)自動(dòng)計(jì)算長度。選擇保存類型為RAW Binary, 并選擇本地保存位置

3.點(diǎn)擊OK下載數(shù)據(jù)

4. 為了驗(yàn)證數(shù)據(jù)的準(zhǔn)確性,我們直接編寫一個(gè)簡(jiǎn)單的上位機(jī)OpenCV的基于Python的預(yù)覽程序,代碼中的文件名對(duì)應(yīng)第2步保存的文件:

import numpy as np
import cv2 as cv 
img_raw_data = np.fromfile(“your_path/your_file_name.bin”, dtype=”uint8”)
img = np.reshape(img_raw_data, (240, 320, 3)) # the new shape
cv.imshow(“img”, img)
cv.waitKey(0)

注意:這里假設(shè)電腦上已經(jīng)安裝了Python,并且安裝了numpy以及opencv代碼庫

5. 程序執(zhí)行之后,讓我們看看最終結(jié)果:

至此,我們就用了一個(gè)簡(jiǎn)單的代碼驗(yàn)證了我們所編譯的OpenCV庫的正確性。下期小編將為大家揭秘,如何從0開始構(gòu)建一個(gè)完整的OpenCV測(cè)試?yán)獭?/span>

審核編輯:郭婷


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2120

    瀏覽量

    76452
  • OpenCV
    +關(guān)注

    關(guān)注

    33

    文章

    650

    瀏覽量

    43968

原文標(biāo)題:這個(gè)秋天,OpenCV和MCU更配喲(實(shí)戰(zhàn)篇)

文章出處:【微信號(hào):NXP_SMART_HARDWARE,微信公眾號(hào):恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    零成本鋼鐵俠手套!樹莓派+OpenCV 秒變手勢(shì)遙控器!

    大家好,這是一個(gè)樹莓派和OpenCV的連載專題。使用樹莓派與OpenCV實(shí)現(xiàn)姿態(tài)估計(jì)和面部特征點(diǎn)追蹤使用樹莓派與OpenCV實(shí)現(xiàn)面部和運(yùn)動(dòng)追蹤的云臺(tái)系統(tǒng)使用樹莓派和OpenCV實(shí)現(xiàn)手部
    的頭像 發(fā)表于 08-16 16:16 ?670次閱讀
    零成本鋼鐵俠手套!樹莓派+<b class='flag-5'>OpenCV</b> 秒變手勢(shì)遙控器!

    如何使用樹莓派與OpenCV實(shí)現(xiàn)面部和運(yùn)動(dòng)追蹤的云臺(tái)系統(tǒng)?

    大家好,這是一個(gè)樹莓派和OpenCV的連載專題。使用樹莓派與OpenCV實(shí)現(xiàn)姿態(tài)估計(jì)和面部特征點(diǎn)追蹤使用樹莓派與OpenCV實(shí)現(xiàn)面部和運(yùn)動(dòng)追蹤的云臺(tái)系統(tǒng)使用樹莓派和OpenCV實(shí)現(xiàn)手部
    的頭像 發(fā)表于 08-14 17:45 ?704次閱讀
    如何使用樹莓派與<b class='flag-5'>OpenCV</b>實(shí)現(xiàn)面部和運(yùn)動(dòng)追蹤的云臺(tái)系統(tǒng)?

    錫膏的儲(chǔ)存及使用方法詳解

    錫膏是一種常用的焊接輔助材料,廣泛應(yīng)用于電子、電器、通訊、儀表等行業(yè)的焊接工藝中。正確的儲(chǔ)存和使用方法對(duì)于保證錫膏的品質(zhì)和焊接效果至關(guān)重要。本文將就錫膏的儲(chǔ)存和使用方法進(jìn)行詳細(xì)介紹,希望能對(duì)廣大焊接工作者有所幫助。
    的頭像 發(fā)表于 07-18 17:36 ?838次閱讀
    錫膏的儲(chǔ)存及<b class='flag-5'>使用方法</b>詳解

    如何在k230上運(yùn)行OpenCV的代碼?

    如何在k230上運(yùn)行OpenCV的代碼
    發(fā)表于 06-17 06:06

    LCR測(cè)試儀的使用方法與注意事項(xiàng)

    LCR測(cè)試儀的使用方法、操作注意事項(xiàng)及常見故障處理,幫助讀者高效、安全地掌握這一儀器的使用技巧。 ? 二、LCR測(cè)試儀的基本使用方法 1. 準(zhǔn)備階段 (1)設(shè)備檢查:確保測(cè)試儀電源線、連接線完好,電源開關(guān)關(guān)閉。檢查測(cè)試夾具或探針
    的頭像 發(fā)表于 04-29 10:36 ?4141次閱讀
    LCR測(cè)試儀的<b class='flag-5'>使用方法</b>與注意事項(xiàng)

    西門子PLC-模擬量采集計(jì)算使用方法

    西門子PLC-模擬量采集計(jì)算使用方法,很實(shí)用
    發(fā)表于 04-09 15:29 ?0次下載

    為LSDK構(gòu)建opencv時(shí)遇到的問題求解

    我正在嘗試使用 flex-builder 來運(yùn)行 bld -c opencv -r ubuntu:桌面 我想要最新版本的 OpenCV。在我的 sdk.yml 文件中,我將 opencv
    發(fā)表于 03-26 08:26

    OpenVINO?工具套件使用CRNN_CS模型運(yùn)行OpenCV* text_detection.cpp報(bào)錯(cuò)怎么解決?

    將 crnn_cs.onnx 文本識(shí)別模型轉(zhuǎn)換為中間表示 (IR): python mo.py --input_model crnn_cs.onnx 使用生成的 IR 文件運(yùn)行 OpenCV
    發(fā)表于 03-05 09:19

    電網(wǎng)模擬器使用方法入門指南

    電網(wǎng)模擬器是一種強(qiáng)大的工具,可以模擬電力系統(tǒng)的運(yùn)行情況,非常有助于電力系統(tǒng)的設(shè)計(jì)、測(cè)試、運(yùn)行和維護(hù)。下面我們將一步步介紹如何使用電網(wǎng)模擬器,幫助初學(xué)者輕松上手。 一、連接設(shè)備 首先,使用方法就是將
    的頭像 發(fā)表于 02-11 17:38 ?1103次閱讀
    電網(wǎng)模擬器<b class='flag-5'>使用方法</b>入門指南

    精密空調(diào)操作使用方法詳解

    精密空調(diào)操作使用方法詳解
    的頭像 發(fā)表于 02-10 14:44 ?1573次閱讀
    精密空調(diào)操作<b class='flag-5'>使用方法</b>詳解

    快速了解電源模塊的使用方法

    電源是整個(gè)電路可靠工作的核心部分。然而,由于電源電路的電流和發(fā)熱量較大,容易出現(xiàn)故障。今天我為大家介紹一下電源模塊的使用方法
    的頭像 發(fā)表于 01-21 15:24 ?1176次閱讀

    瑞芯微開發(fā)板/主板Android系統(tǒng)APK簽名文件使用方法,實(shí)用干貨

    瑞芯微主板/開發(fā)板Android系統(tǒng),APK系統(tǒng)簽名文件使用方法
    的頭像 發(fā)表于 12-26 09:43 ?1364次閱讀
    瑞芯微開發(fā)板/主板Android系統(tǒng)APK簽名文件<b class='flag-5'>使用方法</b>,實(shí)用干貨

    AB伺服軟件使用方法

    AB伺服軟件使用方法
    發(fā)表于 12-24 14:45 ?1次下載

    RK3568 + OpenCV 會(huì)碰撞出什么火花?案例詳解:2-1 基于OpenCV的畫線實(shí)驗(yàn)

    一、實(shí)驗(yàn)?zāi)康?本節(jié)視頻的目的是了解OpenCV的作用并通過OpenCV實(shí)現(xiàn)畫線。 二、實(shí)驗(yàn)原理 OpenCV 開放源代碼計(jì)算機(jī)視覺庫 OpenCV(Open source Comput
    發(fā)表于 12-03 14:09

    如何用OpenCV的相機(jī)捕捉視頻進(jìn)行人臉檢測(cè)--基于米爾NXP i.MX93開發(fā)板

    功能,首先要進(jìn)行人臉檢測(cè),判斷出圖片中人臉的位置,才能進(jìn)行下一步的操作。 OpenCV人臉檢測(cè)方法OpenCV中主要使用了兩種特征(即兩種方法)進(jìn)行人臉檢測(cè),Haar特征和LBP特
    發(fā)表于 11-15 17:58