JavaCV的攝像頭實(shí)戰(zhàn)之二:本地窗口預(yù)覽

歡迎訪問我的GitHub

https://github.com/zq2599/blog_demos

內(nèi)容:所有原創(chuàng)文章分類匯總及配套源碼,涉及Java、Docker、Kubernetes、DevOPS等;

本篇概覽

編碼

  • 前文創(chuàng)建的<font color="red">simple-grab-push</font>工程中已經(jīng)準(zhǔn)備好了父類<font color="blue">AbstractCameraApplication</font>,所以本篇繼續(xù)使用該工程,創(chuàng)建子類實(shí)現(xiàn)那些抽象方法即可

  • 編碼前先回顧父類的基礎(chǔ)結(jié)構(gòu),如下圖,粗體是父類定義的各個(gè)方法,紅色塊都是需要子類來實(shí)現(xiàn)抽象方法,所以接下來,咱們以本地窗口預(yù)覽為目標(biāo)實(shí)現(xiàn)這三個(gè)紅色方法即可:

在這里插入圖片描述
  • 新建文件<font color="blue">PreviewCamera.java</font>,這是AbstractCameraApplication的子類,其代碼很簡單,接下來按上圖順序依次說明

  • 先定義CanvasFrame類型的成員變量previewCanvas,這是展示視頻幀的本地窗口:

protected CanvasFrame previewCanvas
  • 然后是初始化操作,可見是previewCanvas的實(shí)例化和參數(shù)設(shè)置:
@Override
    protected void initOutput() {
        previewCanvas = new CanvasFrame("攝像頭預(yù)覽", CanvasFrame.getDefaultGamma() / grabber.getGamma());
        previewCanvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        previewCanvas.setAlwaysOnTop(true);
    }
  • 接下來是output方法,定義了拿到每一幀視頻數(shù)據(jù)后做什么事情,這里是在本地窗口顯示:
@Override
    protected void output(Frame frame) {
        // 預(yù)覽窗口上顯示當(dāng)前幀
        previewCanvas.showImage(frame);
    }
  • 最后是處理視頻的循環(huán)結(jié)束后,程序退出前要做的事情,即關(guān)閉本地窗口:
@Override
    protected void releaseOutputResource() {
        if (null!= previewCanvas) {
            previewCanvas.dispose();
        }
    }
  • 至此,用本地窗口預(yù)覽攝像頭的功能已開發(fā)完成,再寫上main方法,注意參數(shù)<font color="red">1000</font>表示預(yù)覽持續(xù)時(shí)間是1000秒:
public static void main(String[] args) {
        new PreviewCamera().action(1000);
    }
  • 運(yùn)行main方法,如下圖,攝像頭順利工作,左上角的時(shí)間水印也能正常顯示(可見今天深圳的天氣不錯(cuò),應(yīng)該出去走走,而不是在家寫博客...):
在這里插入圖片描述
  • 至此,咱們已完成了本地窗口預(yù)覽功能,得益于JavaCV的強(qiáng)大,整個(gè)過程是如此的輕松愉快,接下來請繼續(xù)關(guān)注欣宸原創(chuàng),《JavaCV的攝像頭實(shí)戰(zhàn)》系列還會呈現(xiàn)更多豐富的應(yīng)用;

源碼下載

名稱 鏈接 備注
項(xiàng)目主頁 https://github.com/zq2599/blog_demos 該項(xiàng)目在GitHub上的主頁
git倉庫地址(https) https://github.com/zq2599/blog_demos.git 該項(xiàng)目源碼的倉庫地址,https協(xié)議
git倉庫地址(ssh) git@github.com:zq2599/blog_demos.git 該項(xiàng)目源碼的倉庫地址,ssh協(xié)議
  • 這個(gè)git項(xiàng)目中有多個(gè)文件夾,本篇的源碼在<font color="blue">javacv-tutorials</font>文件夾下,如下圖紅框所示:
在這里插入圖片描述
  • <font color="blue">javacv-tutorials</font>里面有多個(gè)子工程,《JavaCV的攝像頭實(shí)戰(zhàn)》系列的代碼在<font color="red">simple-grab-push</font>工程下:
在這里插入圖片描述

你不孤單,欣宸原創(chuàng)一路相伴

https://github.com/zq2599/blog_demos

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容