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

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

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

如何在OpenCV中實(shí)現(xiàn)光流呢?

冬至子 ? 來(lái)源:技術(shù)鋪?zhàn)?/span> ? 作者:chasenzhang ? 2023-01-18 15:19 ? 次閱讀

介紹

光流是由物體或照相機(jī)的運(yùn)動(dòng)引起的兩個(gè)連續(xù)幀之間圖像物體視在運(yùn)動(dòng)的模式。它是2D向量場(chǎng),其中每個(gè)向量都是位移向量,顯示點(diǎn)從第一幀到第二幀的運(yùn)動(dòng)。

光流在以下領(lǐng)域有許多應(yīng)用:

  • 運(yùn)動(dòng)結(jié)構(gòu)
  • 視頻壓縮
  • 視頻穩(wěn)定

光流的工作基于以下幾個(gè)假設(shè):

  • 物體的像素強(qiáng)度在連續(xù)的幀之間不改變。
  • 相鄰像素具有相似的運(yùn)動(dòng)。

實(shí)現(xiàn)

在OpenCV中實(shí)現(xiàn)光流的步驟

1 查找一些關(guān)鍵點(diǎn)

在例子中我們用goodFeaturesToTrack函數(shù)來(lái)查找關(guān)鍵點(diǎn)。函數(shù)原型:

void cv::goodFeaturesToTrack( InputArray _image, OutputArray _corners,
                              int maxCorners, double qualityLevel, double minDistance,
                              InputArray _mask, int blockSize,
                              bool useHarrisDetector, double harrisK )

2 迭代跟蹤這些點(diǎn)

例子中用calcOpticalFlowPyrLK來(lái)計(jì)算光流。函數(shù)原型:

void cv::calcOpticalFlowPyrLK( InputArray _prevImg, InputArray _nextImg,
                               InputArray _prevPts, InputOutputArray _nextPts,
                               OutputArray _status, OutputArray _err,
                               Size winSize, int maxLevel,
                               TermCriteria criteria,
                               int flags, double minEigThreshold )

根據(jù)我的理解,在當(dāng)前幀查找一些關(guān)鍵點(diǎn),然后根據(jù)這些關(guān)鍵點(diǎn),在下一幀進(jìn)行匹配,得到這些點(diǎn)在下一幀的位置。這樣就得到了了一組向量,表示了當(dāng)前幀和下一幀之前點(diǎn)的移動(dòng),也就實(shí)現(xiàn)了對(duì)一些物體的跟蹤。

官方例子

#include 
#include 
#include 
#include 
#include 
#include 


using namespace cv;
using namespace std;


int main(int argc, char **argv)
{
    const string about =
        "This sample demonstrates Lucas-Kanade Optical Flow calculation.\\n"
        "The example file can be downloaded from:\\n"
        "  https://www.bogotobogo.com/python/OpenCV_Python/images/mean_shift_tracking/slow_traffic_small.mp4";
    const string keys =
        "{ h help |      | print this help message }"
        "{ @image | vtest.avi | path to image file }";
    CommandLineParser parser(argc, argv, keys);
    parser.about(about);
    if (parser.has("help"))
    {
        parser.printMessage();
        return 0;
    }
    string filename = samples::findFile(parser.get

運(yùn)行結(jié)果截圖

2.jpg

審核編輯:劉清

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

    關(guān)注

    31

    文章

    635

    瀏覽量

    41374
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84755
  • printf函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    31

    瀏覽量

    5896
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    何在OpenCV中使用基于深度學(xué)習(xí)的邊緣檢測(cè)?

    在這篇文章,我們將學(xué)習(xí)如何在OpenCV中使用基于深度學(xué)習(xí)的邊緣檢測(cè),它比目前流行的canny邊緣檢測(cè)器更精確。
    的頭像 發(fā)表于 05-19 09:52 ?2100次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>OpenCV</b>中使用基于深度學(xué)習(xí)的邊緣檢測(cè)?

    ELF 1技術(shù)貼|如何在Ubuntu編譯OpenCV庫(kù)

    在之前發(fā)布的文章探討了交叉編譯OpenCV并部署至嵌入式系統(tǒng)的方法。然而,在調(diào)試階段,我們發(fā)現(xiàn)在Ubuntu環(huán)境下將OpenCV編譯為X86架構(gòu)可能更加方便和高效。通過(guò)在主機(jī)上編譯并使用X86架構(gòu)
    的頭像 發(fā)表于 05-31 16:41 ?1175次閱讀
    ELF 1技術(shù)貼|如<b class='flag-5'>何在</b>Ubuntu<b class='flag-5'>中</b>編譯<b class='flag-5'>OpenCV</b>庫(kù)

    【教程】通俗講法告訴你什么是Optical Flow,附算法

    學(xué)者重視。 還是回歸應(yīng)用吧,目前OpenCV實(shí)現(xiàn)了不少的算法。1. calcOpticalFlowPyrLK通過(guò)金字塔Lucas-Ka
    發(fā)表于 06-02 17:18

    何在STM32上去搭建一種硬件

    為什么需要控?控的作用是什么?如何在STM32上去搭建一種硬件?
    發(fā)表于 12-07 06:38

    何在RK3288上去安裝Opencv開(kāi)源計(jì)算機(jī)視覺(jué)庫(kù)

    Opencv是什么?如何在RK3288上去安裝Opencv開(kāi)源計(jì)算機(jī)視覺(jué)庫(kù)?
    發(fā)表于 02-16 07:06

    何在STM32上搭建硬件

    為什么需要控?一般常用的控方式有幾種?如何在STM32上搭建硬件?
    發(fā)表于 02-18 06:19

    何在RK3288上安裝Opencv?

    何在RK3288上安裝Opencv?
    發(fā)表于 03-10 06:49

    OpenCV的BGR格式,在libyuv對(duì)應(yīng)的那個(gè)格式?OpenCV的RGB格式?

    OpenCV的BGR格式,在libyuv對(duì)應(yīng)的那個(gè)格式?OpenCV的RGB格式?
    發(fā)表于 09-19 06:00

    何在開(kāi)發(fā)環(huán)境的Python環(huán)境下使用我們提供的BM-OpenCV?

    何在開(kāi)發(fā)環(huán)境的Python環(huán)境下使用我們提供的BM-OpenCV?
    發(fā)表于 09-19 07:14

    在Vivado如何實(shí)現(xiàn)OpenCV設(shè)計(jì)

    觀看視頻,了解OpenCV庫(kù)和其在一些典型應(yīng)用的使用,以及Zynq-7000 SoC的優(yōu)點(diǎn)和如何實(shí)現(xiàn)OpenCV設(shè)計(jì)。同時(shí)您還能學(xué)習(xí)到如何在
    的頭像 發(fā)表于 11-20 06:46 ?3948次閱讀

    OpenCV庫(kù)的特點(diǎn)和主要功能及實(shí)現(xiàn)方法的運(yùn)動(dòng)說(shuō)明

    序列圖像的計(jì)算是計(jì)算機(jī)視覺(jué)研究領(lǐng)域運(yùn)動(dòng)估計(jì)的重要組成部分。本文介紹了OpenCV庫(kù)的特點(diǎn)和主要功能,通過(guò)調(diào)用函數(shù)庫(kù)的金字塔Lucas—Kanade
    發(fā)表于 10-15 11:56 ?12次下載
    <b class='flag-5'>OpenCV</b>庫(kù)的特點(diǎn)和主要功能及<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>光</b><b class='flag-5'>流</b>方法的運(yùn)動(dòng)說(shuō)明

    OpenCV庫(kù)的特點(diǎn)和功能與如何快速實(shí)現(xiàn)場(chǎng)的方法說(shuō)明

    序列圖像的計(jì)算是計(jì)算機(jī)視覺(jué)研究領(lǐng)域運(yùn)動(dòng)估計(jì)的重要組成部分。本文介紹了0PenCV庫(kù)的特點(diǎn)和主要功能,通過(guò)調(diào)用函數(shù)庫(kù)的金字塔Lucas-Kanade
    發(fā)表于 10-31 11:53 ?3次下載
    <b class='flag-5'>OpenCV</b>庫(kù)的特點(diǎn)和功能與如何快速<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>光</b><b class='flag-5'>流</b>場(chǎng)的方法說(shuō)明

    奧比OpenCV成為戰(zhàn)略合作伙伴

    近日,奧比OpenCV(OpenSource Computer Vision Library)簽署《戰(zhàn)略合作協(xié)議》,雙方正式成為戰(zhàn)略合作伙伴。OpenCV5.0規(guī)劃納入3D視覺(jué)技
    的頭像 發(fā)表于 09-25 16:22 ?2669次閱讀

    OpenCV Webinar 2丨如何在OpenCV調(diào)用Tengine推理,實(shí)現(xiàn)開(kāi)發(fā)效率翻倍

    這個(gè)月,OPEN AI LAB的合作伙伴OpenCV 20歲了!值此之際,OpenCV中國(guó)團(tuán)隊(duì)推出系列OpenCV Webinar,在全球范圍內(nèi)定期邀請(qǐng)OpenCV專(zhuān)家來(lái)作...
    發(fā)表于 01-26 19:48 ?3次下載
    <b class='flag-5'>OpenCV</b> Webinar 2丨如<b class='flag-5'>何在</b><b class='flag-5'>OpenCV</b><b class='flag-5'>中</b>調(diào)用Tengine推理,<b class='flag-5'>實(shí)現(xiàn)</b>開(kāi)發(fā)效率翻倍

    何在OpenCV實(shí)現(xiàn)CUDA加速

    OpenCV4.x關(guān)于CUDA加速的內(nèi)容主要有兩個(gè)部分,第一部分是之前OpenCV支持的圖像處理與對(duì)象檢測(cè)傳統(tǒng)算法的CUDA加速;第二部分是OpenCV4.2版本之后開(kāi)始支持的針對(duì)深
    的頭像 發(fā)表于 09-05 10:03 ?5069次閱讀