国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【OpenCV】Qt + OpenCV 開發(fā)配置 + 入門知識(代碼示例)

這篇具有很好參考價值的文章主要介紹了【OpenCV】Qt + OpenCV 開發(fā)配置 + 入門知識(代碼示例)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

前言?

一、OpenCV簡介

二、OpenCV + QT 開發(fā)環(huán)境搭建

??資源下載

三、OpenCV圖像原理

??位圖模式?

??灰度模式

??RGB模式

四、OpenCV基礎圖像操作

??讀圖像

??顯示圖片?

??保存圖片

??Mat類

??像素

五、案例實現(xiàn)?

??毛玻璃效果

??高斯模糊

??XY軸模糊

??中值濾波

??灰度處理

??視頻獲取

??攝像頭調(diào)用

?六、總結


前言?

本文主要學習 Windows下?Qt + OpenCV?的開發(fā)環(huán)境的相關配置,以及OpenCV入門相關案例

包括 OpenCV圖像原理、基礎圖像操作、案例實現(xiàn)

一、OpenCV簡介

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

  • OpenCV 于1999年由Gary Bradsky在英特爾創(chuàng)立,第一個版本于2000年問世
  • OpenCV 是一個基于開源發(fā)行的跨平臺計算機視覺庫,它實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法,已成為計算機視覺領域最有力的研究工具
  • OpenCV 由一系列 C函數(shù) 和 少量C++類構成,也有提供其他語言的接口,例如,支持python、matlab等語言

應用領域:?

  • 包括在衛(wèi)星和網(wǎng)絡地圖上拼接圖像,圖像掃描校準,醫(yī)學圖像的降噪,目標分析,安保以及工業(yè)檢測系統(tǒng),自動駕駛和安全系統(tǒng),制造感知系統(tǒng),相機校正,軍事應用,無人空中、地面、水下航行器

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

生活中的例子:

  • 像我們的短視頻、直播上面的一些特效、美顏,現(xiàn)在比較火的無人快遞車、汽車自動駕駛等,還有我們出行最常見的地鐵站 ,用于疫情防控的人臉識別測溫等等

概念區(qū)分:

  • 圖像處理側(cè)重于 “處理” 圖像,如增強,還原,去噪,分割等等
  • 計算機視覺重點在于使用計算機來模擬人的視覺,因此模擬才是計算機視覺領域的最終目標

二、OpenCV + QT 開發(fā)環(huán)境搭建

??資源下載

下載鏈接:win10-opencv-Qt-WindowsServer文檔類資源-CSDN下載?

首先,預設值一個存放QT工程文件的文件夾,博主文件名為?QT-project?,如下圖所示:

PS:千萬不能有中文或者空格

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

然后,將46個.dll文件(除了.exe文件)拷貝一份到以下路徑 C:\Windows\SysWOW64?

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

Qt工程配置

這是博主使用的QT版本,如下圖所示:

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

本文OpenCV學習均使用C++進行編譯,Qt創(chuàng)建工程操作如下:?

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

設置工程名字,這邊的創(chuàng)建路徑就是上文創(chuàng)建的?QT-project?,然后持續(xù)點擊下一步,完成創(chuàng)建qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

在?.pro文件?下,添加如下,路徑可根據(jù)自己設定的位置進行修改:

INCLUDEPATH += D:\QT-project\opencv_3.4.2_Qt/include
LIBS += D:\QT-project\opencv_3.4.2_Qt/x86/bin/libopencv_*.dll

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

Ctrl+s 保存后,主函數(shù)導入相關頭文件進行測試,效果如下圖,出現(xiàn) Hello Word! 即為測試成功!

#include <opencv2/opencv.hpp>

using namespace cv;

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

以上,即為 Qt + OpenCV 開發(fā)環(huán)境開發(fā)的全部內(nèi)容啦,下面進入到相關的知識介紹以及案例實現(xiàn)

三、OpenCV圖像原理

  • 在計算機看來,圖像只是一些亮度各異的點
  • 一副M*N的圖片可以用M*N的矩陣來表示,矩陣的值表示這個位置上像素的亮度,他可以被表示為多種模式

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

  • 位圖模式
  • 灰度模式
  • RGB模式

??位圖模式?

  • 位圖模式是1位深度的圖像,它只是黑和白兩種顏色
  • 它可以由掃描或置入黑色的矢量線條圖像生成,也能由灰度模式轉(zhuǎn)換而成
  • 其他圖像模式不能直接轉(zhuǎn)換為位圖模式

0

1

1

0

。。。

1

0

1

1

。。。

0

0

0

1

。。。

1

0

1

0

。。。

??灰度模式

  • 灰度模式是8位深度的圖像模式
  • 在全黑和全白之間插有254個(2^8)灰度等級的顏色來描繪灰度模式的圖像
  • 所有模式的圖像都能換成灰度模式

0

98

1

98

。。。

1

78

25

68

。。。

123

56

57

41

。。。

206

33

13

51

。。。

??RGB模式

  • RGB模式是數(shù)碼圖像中最重要的一個模式,它不是用數(shù)碼而是用電平來描述的
  • 掃描儀和數(shù)碼相機都是捕捉RGB圖像信息的
  • RGB模式是24位顏色深度。它共有三個通道,每個通道都有8位深度
  • 三個通道合成一起可生成1677萬種顏色,我們也稱之謂 “真彩色”

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

四、OpenCV基礎圖像操作

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

??讀圖像

功能:載入一張圖片

函數(shù)原型:Mat cv::imread(char filename,int flag);

返回值:Mat 可以理解為一個存儲數(shù)據(jù)的容器,定義了一個img對象來存圖片的數(shù)據(jù)?

參數(shù):

參數(shù)1:圖片路徑名

參數(shù)2:

????????cv::IMREAD_COLOR:讀入一副彩色圖像。圖像的透明度會被忽略,默認參數(shù)可寫成1?

????????cv::IMREAD_GRAYSCALE:以灰度模式讀入圖像可以寫成 0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????cv::IMREAD_UNCHANGED:讀入一幅圖像,并且包括圖像的 alpha 通道,可以寫成-1

??顯示圖片?

功能:顯示一張圖片

函數(shù)原型:void cv::imshow(const String&vinname,InputArry mat);

返回值: ? 無類型

參數(shù): ?

參數(shù)1:顯示的窗口名,可以使用cv::namedWindow函數(shù)創(chuàng)建窗口,如不創(chuàng)建,imshow函數(shù)自動創(chuàng)建? ?

參數(shù)2:需要顯示的圖像

??保存圖片

功能:保存一張圖片到指定的文件

函數(shù)原型:bool ?cv::imwrite(const String& filename, InputArry mat,?

? ? ? ? ? ? ? ? ? const std::vector<int>&params=std::vector<int>());

返回值: ? bool類型

參數(shù): ?

參數(shù)1:圖片名稱.圖片格式 ?

參數(shù)2:Mat類型的圖像數(shù)據(jù) ?

參數(shù)3:特定格式保存的參數(shù)編碼,默認值為 std::vector<int>();一般可以不寫

??Mat類

Mat類:是 OpenCV 用于處理圖像而引入的一個封裝類,他是一個自動內(nèi)存管理工具

Mat:本質(zhì)上是由兩個數(shù)據(jù)部分組成的類

  • 包含信息有矩陣的大小,用于存儲的方法,矩陣存儲的地址等,?矩陣頭和一個指針
  • 指向包含了像素值的矩陣(可根據(jù)選擇用于存儲的方法采用任何維度存儲數(shù)據(jù))
  • 矩陣頭部的大小是恒定的
  • 矩陣本身的大小因圖像的不同而不同,通常是較大的數(shù)量級圖像矩陣比較耗時

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

??像素

  • 是指由圖像的小方格組成的,這些小方格都有一個明確的位置和被分配的色彩數(shù)值,小方格顏色和位置就決定該圖像所呈現(xiàn)出來的樣子
  • 像素點不可再分割成更小的單位或元素
  • 一張圖片就是由很多個像素點組成的,如果圖片大小為25*25,那么這張圖片就是由625個像素點組成,一行有25個像素點,一共25列
  • 一張圖片所有的像素點存在MAT矩陣中,MAT(i,j)的值就是當前像素點的值

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

五、案例實現(xiàn)?

??毛玻璃效果

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

代碼實現(xiàn)

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;

//毛玻璃特效
Mat imgeGalss(Mat &img)
{
    RNG rng;
    int random = 0;
    int num = 5;

    for(int i = 0;i<img.rows - num;i++)
    {
        for (int j=0;j<img.cols - num;j++)
        {
            random = rng.uniform(0,num);//三通道
            img.at<Vec3b>(i,j)[0] = img.at<Vec3b>(i+random,j+random)[0];
            img.at<Vec3b>(i,j)[1] = img.at<Vec3b>(i+random,j+random)[1];
            img.at<Vec3b>(i,j)[2] = img.at<Vec3b>(i+random,j+random)[2];
        }
    }
    return img;
}

int main(int argc, char *argv[])
{
    Mat img = imread("C:/Users/86177/Desktop/image/dog.jpg");//圖片路徑

    //處理前
    imshow("img",img);//顯示圖片

    //處理后的
    Mat resimg = imgeGalss(img);//毛玻璃
    imshow("resimg",resimg);//顯示圖片

    waitKey(0);//等待按鍵

    return 0;
}

??高斯模糊

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

代碼實現(xiàn)?

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;


int main(int argc, char *argv[])
{
    Mat img = imread("C:/Users/86177/Desktop/image/dog.jpg");//圖片路徑

    //處理前
    imshow("img",img);//顯示圖片

    Mat resimg;

    //高斯模糊
    cv::GaussianBlur(img,resimg,Size(5,5),0);

    imshow("resimg",resimg);//顯示圖片

    waitKey(0);//等待按鍵

    return 0;
}

??XY軸模糊

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

代碼實現(xiàn)??

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;


int main(int argc, char *argv[])
{
    Mat img = imread("C:/Users/86177/Desktop/image/dog.jpg");//圖片路徑

    //處理前
    imshow("img",img);//顯示圖片

    Mat resimg;

    //XY軸模糊
    cv::blur(img,resimg,Size(10,10));

    imshow("resimg",resimg);//顯示圖片

    waitKey(0);//等待按鍵

    return 0;
}

??中值濾波

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

代碼實現(xiàn)??

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;


int main(int argc, char *argv[])
{
    Mat img = imread("C:/Users/86177/Desktop/image/dog.jpg");//圖片路徑

    //處理前
    imshow("img",img);//顯示圖片

    Mat resimg;

    //中值濾波
    cv::medianBlur(img,resimg,5);

    imshow("resimg",resimg);//顯示圖片

    waitKey(0);//等待按鍵

    return 0;
}

??灰度處理

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

代碼實現(xiàn)

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;


int main(int argc, char *argv[])
{
    Mat img = imread("C:/Users/86177/Desktop/image/dog.jpg");//圖片路徑

    //處理前
    imshow("img",img);//顯示圖片

    Mat resimg;

    //灰度處理
    cvtColor(img,resimg,CV_BGR2GRAY);

    imshow("resimg",resimg);//顯示圖片

    waitKey(0);//等待按鍵

    return 0;
}

??視頻獲取

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

代碼實現(xiàn)??

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;

int main(int argc, char *argv[])
{      
    Mat frame;
    VideoCapture cap("C:/Users/86177/Desktop/image/ren.mp4");//視頻獲取
    while (cap.read(frame)) 
    {
        imshow("frame",frame);
        waitKey(24);       
    }
    return 0;
}

??攝像頭調(diào)用

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++

代碼實現(xiàn)??

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;

int main(int argc, char *argv[])
{      
    Mat frame;
    VideoCapture cap(0);//攝像頭調(diào)用
    while (cap.read(frame)) 
    {
        imshow("frame",frame);
        waitKey(24);       
    }
    return 0;
}

?六、總結

  • OpenCV 在機器視覺,圖像處理這方面經(jīng)常用到,特別是疫情當下,用于我們?nèi)粘I钪械娜四橌w溫檢測,真的深有體會,目前,人臉識別的市場還是相當廣闊的!
  • 博主也會繼續(xù)學習這塊內(nèi)容,多嘗試做一些有意思的 demo!

以上就是本文的全部內(nèi)容啦!如果對您有幫助,麻煩點贊啦!收藏啦!歡迎各位評論區(qū)留言?。?!

qt opencv,OpenCV,圖像處理,計算機視覺,人工智能,opencv,c++文章來源地址http://www.zghlxwxcb.cn/news/detail-778557.html

到了這里,關于【OpenCV】Qt + OpenCV 開發(fā)配置 + 入門知識(代碼示例)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Cisco路由器配置入門知識(基礎)

    Cisco路由配置基礎 剛剛接觸cisco路由配置,下面是學習的筆記,感覺命令還是多敲才能熟悉 一、 所處狀態(tài)各類 router 用戶處于用戶命令狀態(tài),可以查看網(wǎng)絡和主機 router# 用戶處于特權模式,可以查看狀態(tài),還可以看到和更改路由器的設置內(nèi)容 router(config)# 全局配置狀態(tài),可以設

    2024年02月06日
    瀏覽(93)
  • 【一文詳解】知識分享:(C#開發(fā)學習快速入門)

    【一文詳解】知識分享:(C#開發(fā)學習快速入門)

    c語言 是面向過程。 c++ 是面向過程+面向?qū)ο蟆?c# 是純粹的面向?qū)ο? 核心思想是以人的思維習慣來分析和解決問題。萬物皆對象 。 面向?qū)ο箝_發(fā)步驟: 分析對象 特征 行為 關系(對象關系/類關系) 寫代碼: 特征–成員變量 方法–成員方法 實例化–具體對象 Note(補充知識)

    2024年01月19日
    瀏覽(130)
  • Java面向?qū)ο蟪绦蜷_發(fā)——網(wǎng)絡編程入門知識

    Java面向?qū)ο蟪绦蜷_發(fā)——網(wǎng)絡編程入門知識

    ? C/S結構 :client/sever是指客戶端和服務器結構。常見程序有QQ、迅雷等軟件。 B/S結構 :browser/sever是指瀏覽器和服務器結構。常見瀏覽器有谷歌、火狐等。 Web應用系統(tǒng)開發(fā)的兩種流行架構 兩種架構各有優(yōu)勢,但是無論哪種架構,都離不開網(wǎng)絡的支持。網(wǎng)絡編程,就是在一

    2024年02月12日
    瀏覽(93)
  • MyBatis基礎知識和快速入門、MyBatis核心配置文件講解

    MyBatis基礎知識和快速入門、MyBatis核心配置文件講解

    什么是Mybatis MyBatis 是一個優(yōu)秀的基于java的 持久層框架 ,它內(nèi)部封裝了jdbc,使開發(fā)者只需要關注sql語句本身,而不需要花費精力去處理加載驅(qū)動、創(chuàng)建連接、創(chuàng)建statement等繁雜的過程。 mybatis通過xml或注解的方式將要執(zhí)行的各種 statement配置起來,并通過java對象和statement中

    2024年02月04日
    瀏覽(87)
  • 開發(fā)基礎知識-認識Tomcat,Tomcat基礎,快速入門Tomcat

    Tomcat 服務器是一個免費的開放源代碼的Web應用服務器,屬于輕量級應用服務器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調(diào)試JSP程序的首選。 往細的方面說:Tomcat 是一個 HTTP 服務器。HTTP 協(xié)議就是 HTTP 客戶端和 HTTP 服務器之間的交互數(shù)據(jù)的格式

    2024年02月19日
    瀏覽(261)
  • 詳解爬蟲基本知識及入門案列(爬取豆瓣電影《熱辣滾燙》的短評 詳細講解代碼實現(xiàn))

    詳解爬蟲基本知識及入門案列(爬取豆瓣電影《熱辣滾燙》的短評 詳細講解代碼實現(xiàn))

    目錄 前言什么是爬蟲? 爬蟲與反爬蟲基礎知識 一、網(wǎng)頁基礎知識 ?二、網(wǎng)絡傳輸協(xié)議 HTTP(HyperText Transfer Protocol)和HTTPS(HTTP Secure)請求過程的原理? 三、Session和Cookies Session Cookies Session與Cookies的區(qū)別與聯(lián)系 ?四、Web服務器Nginx 五、代理IP 1、代理IP的原理 2. 分類 3. 獲取途

    2024年04月29日
    瀏覽(90)
  • 快速上手MATLAB:科研、工程、數(shù)據(jù)分析,MATLAB入門(上)教你基礎知識!+分享MATLAB完全學習手冊資料(視頻+課件+代碼

    快速上手MATLAB:科研、工程、數(shù)據(jù)分析,MATLAB入門(上)教你基礎知識!+分享MATLAB完全學習手冊資料(視頻+課件+代碼

    1、《MATLAB完全學習手冊(視頻+課件+代碼)》 2、《MATLAB入門》 3、《詳解MATLAB在科學計算中的應用》 4、《案例二 MATLAB與Excel交互》 5、《MATLAB初學者教程 MATLAB編程-菜鳥入門(清晰版)》 6、《MATLAB常用函數(shù)參考 MATLAB函數(shù)匯總 精通MATLAB》 7、等等。。。。 編程語言基礎:M

    2024年02月06日
    瀏覽(85)
  • 學習SpringBoot入門知識,附帶教程源碼分享,快速掌握開發(fā)技巧-【imooc-java2021】體系課-Java工程師 2022版

    學習SpringBoot入門知識,附帶教程源碼分享,快速掌握開發(fā)技巧-【imooc-java2021】體系課-Java工程師 2022版

    以下截圖自 Spring Boot 官方文檔: 翻譯整理一下,內(nèi)容如下: Spring Boot 是基于 Spring 框架基礎上推出的一個全新的框架, 旨在讓開發(fā)者可以輕松地創(chuàng)建一個可獨立運行的,生產(chǎn)級別的應用程序。 基于 Spring Boot 內(nèi)部的自動化配置功能,開發(fā)者可以在\\\"零\\\"配置, 或者只需要添加很少

    2024年02月06日
    瀏覽(116)
  • 韋東山嵌入式Liunx入門驅(qū)動開發(fā)一(Hello 驅(qū)動編程、GPIO基礎知識、LED驅(qū)動、總線設備驅(qū)動模型)

    韋東山嵌入式Liunx入門驅(qū)動開發(fā)一(Hello 驅(qū)動編程、GPIO基礎知識、LED驅(qū)動、總線設備驅(qū)動模型)

    本人學習完韋老師的視頻,因此來復習鞏固,寫以筆記記之。 韋老師的課比較難,第一遍不知道在說什么,但是堅持看完一遍,再來復習,基本上就水到渠成了。 看完視頻復習的同學觀看最佳! 基于 IMX6ULL-PRO 參考視頻 Linux快速入門到精通視頻 參考資料 :01_嵌入式Linux應用

    2024年04月25日
    瀏覽(96)
  • (一)Qt+OpenCV調(diào)用??倒I(yè)相機SDK示例開發(fā)

    (一)Qt+OpenCV調(diào)用海康工業(yè)相機SDK示例開發(fā)

    提示:這里是該系列文章的所有文章的目錄 第一章: (一)Qt+OpenCV調(diào)用??倒I(yè)相機SDK示例開發(fā) 第二章: (二)Qt多線程實現(xiàn)海康工業(yè)相機圖像實時采集 近期在Qt環(huán)境下進行??倒I(yè)相機的使用開發(fā),發(fā)現(xiàn)海康提供的示例沒有Qt的demo,而其中有基于MFC框架的示例,所以在這

    2024年02月03日
    瀏覽(150)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包