色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenCV的基礎使用方法及運行成果

恩智浦MCU加油站 ? 來源:恩智浦MCU加油站 ? 作者:恩智浦MCU加油站 ? 2022-11-17 09:44 ? 次閱讀

本期將帶大家帶來一期可以稱作番外篇的一期:暫且稱為OpenCV實戰篇,將介紹OpenCV的一些基礎使用方法,以及在MCU上實際運行起來的效果。

首先是OpenCV的簡單介紹,前面的文章已經介紹過,OpenCV具有模塊化的結構,這意味著其中包含了多種共享/靜態庫,概括如下:

  • Core functionality:定義了所要用到的基礎數據結構體

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

  • Video:視頻處理模塊,包括運動估計,背景減除等

  • Calib3d:單目/雙目相機支持,3D重建等

  • Features2D:特征檢測

  • Objdetect:目標檢測等,例如人臉、眼睛等

  • Highgui:簡單的UI功能

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

  • Gpu:gpu加速算法

所有的OpenCV類/函數都被歸在cv命名空間下。因此,應用層想要訪問任何代碼都需要使用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 );

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

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

接下來要講的是一個OpenCV中的重要結構Mat。

如果你想要使用OpenCV的話,Mat是你無論如何躲不過的一步。通俗點講,這個結構體代表了一種n維數組,并且能夠抽象表達成矩陣/圖像/光流圖等。

其公共屬性如下:

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

-

作為一個名副其實的C++類,OpenCV為其編寫了多種構造函數,這也使得有多種方式能夠創建一個cv::Mat對象,用的比較多的幾種方式如下:

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.使用拷貝構造函數,時間復雜度為O(1),因為這種方式將只拷貝header并增加引用計數,數據部分將公用,也稱作淺拷貝。當然也可以使用深拷貝,cv::clone()可以做到這一點。

3.僅構造頭部,并使用用戶預分配數據:
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.對象與數據空間的釋放:cv::release()


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

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

為了方便我們在沒有文件系統的MCU平臺使用測試圖像,需要借助一條匯編指令.incbin, 并且聲明兩個全局符號告訴代碼數據位置:

  .global img_start
  .global img_end

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

接下來是main函數:

// 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);

編譯下載后,讓我們看看轉出的數據是不是正確,我們就需要將數據傳輸到PC上進行驗證:

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

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

2. 點擊Export,輸入起止地址,IDE會自動計算長度。選擇保存類型為RAW Binary, 并選擇本地保存位置

3.點擊OK下載數據

4. 為了驗證數據的準確性,我們直接編寫一個簡單的上位機OpenCV的基于Python的預覽程序,代碼中的文件名對應第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)

注意:這里假設電腦上已經安裝了Python,并且安裝了numpy以及opencv代碼庫

5. 程序執行之后,讓我們看看最終結果:

至此,我們就用了一個簡單的代碼驗證了我們所編譯的OpenCV庫的正確性。下期小編將為大家揭秘,如何從0開始構建一個完整的OpenCV測試例程。

審核編輯:郭婷


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C++
    C++
    +關注

    關注

    22

    文章

    2110

    瀏覽量

    73685
  • OpenCV
    +關注

    關注

    31

    文章

    635

    瀏覽量

    41373

原文標題:這個秋天,OpenCV和MCU更配喲(實戰篇)

文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    AB伺服軟件使用方法

    AB伺服軟件使用方法
    發表于 12-24 14:45 ?0次下載

    可回饋式電網模擬器的使用方法有哪些?

    電網模擬器的使用方法主要包括連接設備、設置參數、運行模擬、分析結果、故障模擬和培訓操作人員等步驟。通過使用回饋式電網模擬器,可以對電力系統的運行進行深入研究,提高電力系統的運行效率和安
    發表于 10-16 10:50

    示波器高壓探頭使用方法

    示波器高壓探頭是一種用于測量高電壓信號的儀器,通常用于高壓電源、電機、變壓器等電氣設備的測試。以下是示波器高壓探頭的詳細使用方法
    的頭像 發表于 10-03 16:43 ?452次閱讀

    探針頭型使用方法有哪些

    探針頭型的使用方法多種多樣,具體取決于探針頭型的類型、被測對象的特性以及測試需求。以下是一些常見探針頭型的使用方法概述: 1. 凹頭探針 用途 :主要用于測試長導腳、端子及繞線柱等較長或較粗的被測點
    的頭像 發表于 09-07 10:57 ?681次閱讀

    DC/DC模擬的基本使用方法和特性確認方法

    本篇介紹了DC/DC模擬的基本使用方法及確認基本特性的方法
    的頭像 發表于 08-20 17:08 ?715次閱讀
    DC/DC模擬的基本<b class='flag-5'>使用方法</b>和特性確認<b class='flag-5'>方法</b>

    opencv-python和opencv一樣嗎

    不一樣。OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和機器學習軟件庫,它提供了大量的圖像和視頻處理功能。OpenCV
    的頭像 發表于 07-16 10:38 ?1221次閱讀

    淺談錫膏的儲存及使用方法

    錫膏(焊錫膏)是電子組裝過程中常用的材料,它的儲存和使用方法對保證焊接質量和性能至關重要。以下是詳細的儲存及使用方法
    的頭像 發表于 06-27 10:02 ?907次閱讀

    可編程電源使用方法

    可編程電源使用方法 可編程電源使用方法 摘要:本文詳細介紹了可編程電源的使用方法,包括其基本概念、主要功能、選擇原則、操作步驟、注意事項以及實際應用案例,旨在幫助讀者全面了解可編程電源
    的頭像 發表于 06-10 15:29 ?1039次閱讀

    現場總線的使用方法與注意事項

    的穩定可靠運行,正確的使用方法和注意事項至關重要。本文將詳細介紹現場總線的使用方法和注意事項,以供讀者參考。
    的頭像 發表于 06-06 11:49 ?803次閱讀

    手柄控制代碼及使用方法

    手柄控制代碼及使用方法
    的頭像 發表于 05-15 10:19 ?1864次閱讀

    手機信號屏蔽器:功能、原理及使用方法詳解

    深圳特信電子|手機信號屏蔽器:功能、原理及使用方法詳解
    的頭像 發表于 04-01 09:09 ?3145次閱讀

    555集成芯片的使用方法

    555集成芯片的使用方法主要依賴于其特定的引腳功能和電路設計。
    的頭像 發表于 03-25 14:39 ?1516次閱讀

    快速限流器的使用方法 快速限流超時故障的常見原因

    快速限流器的使用方法涉及一系列步驟,旨在確保設備的正確安裝、配置和運行,從而有效限制電流,保護電路和系統免受過大電流的損害。
    的頭像 發表于 03-21 16:37 ?2909次閱讀

    OpenCV兩種不同方法實現粘連大米分割計數

    測試圖如下,圖中有個別米粒相互粘連,本文主要演示如何使用OpenCV用兩種不同方法將其分割并計數。
    的頭像 發表于 01-22 14:55 ?1761次閱讀
    <b class='flag-5'>OpenCV</b>兩種不同<b class='flag-5'>方法</b>實現粘連大米分割計數

    磁場探頭和電場探頭的使用方法與技巧

    磁場探頭和電場探頭的使用方法與技巧? 磁場探頭和電場探頭是用于測量磁場和電場的儀器。它們在科學實驗、工程設計和實際應用中都起著重要的作用。本文將詳細介紹磁場探頭和電場探頭的使用方法和技巧。 一、磁場
    的頭像 發表于 01-05 14:31 ?938次閱讀
    主站蜘蛛池模板: 久久受www免费人成_看片中文| 日韩1区1区产品乱码芒果榴莲 | 日本熟妇多毛XXXXX视频| 超碰免费视频在线观看| 波多野结衣的AV一区二区三区| 青草久久精品亚洲综合专区| 国产传媒麻豆剧精品AV| 亚洲精品国产AV成人毛片| 久久久中日AB精品综合| 被公疯狂玩弄的漂亮人妻| 蜜芽手机在线观看| 中文字幕乱码一区AV久久| 欧美黑人巨大xxxxx| 国产精品高潮呻吟AV久久96| 永久精品免费影院在线观看网站| 青青青伊人| 寂寞夜晚看免费视频| japonensis护士| 亚洲欧洲日产国产 最新| 青青草原国产| 久久爱狠狠综合网| 淫品色影院| 少妇人妻偷人精品视蜜桃| 久久久视频2019午夜福利| 高H黄暴NP辣H一女多男| 在线a视频| 无码一区二区在线欧洲| 美国色情三级欧美三级纸匠情挑| 国产精品无码人妻在线| 99久久伊人一区二区yy5099| 欧美群交XXXCOM| 国产在线公开视频| 亚洲三级视频| 三级电影免费看| 国产色播视频在线观看| aa级毛片毛片免费观看久| 日本真人啪啪试看30秒| 久亚洲AV无码专区A片| 国产免费阿v精品视频网址| xxxx老妇性hdbbbb| 中文字幕专区高清在线观看|