日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

.hpp文件_3 OpenCV的头文件说明及第一个示例程序

發(fā)布時間:2024/1/23 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .hpp文件_3 OpenCV的头文件说明及第一个示例程序 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在安裝OpenCV庫并設置好編程環(huán)境之后,我們的就可以讓代碼中發(fā)生一些有趣的事情。但是首先必須弄清楚頭文件。這些頭文件反映了前面介紹的OpenCV模塊化結(jié)構(gòu)。主頭文件是... / include / opencv2 / opencv.hpp; 它只是調(diào)用每個OpenCV模塊的頭文件。下面分別進行說明:

#include "opencv2/core/core_c.h"

舊的C語言數(shù)據(jù)結(jié)構(gòu)和常規(guī)算法

#include"opencv2 / core / core.hpp"

新的C ++數(shù)據(jù)結(jié)構(gòu)和常規(guī)算法

#include"opencv2 / flann / miniflann.hpp"

最近鄰匹配函數(shù)

#include"opencv2 / imgproc / imgproc_c.h"

舊的C語言圖像處理函數(shù)

#include"opencv2 / imgproc / imgproc.hpp"

新的C ++圖像處理函數(shù)

#include"opencv2 / video / photo.hpp"

處理和修復照片的算法

#include"opencv2 / video / video.hpp"

視頻跟蹤和背景分割

#include"opencv2 / features2d / features2d.hpp"

二維特征跟蹤

#include"opencv2 / objdetect / objdetect.hpp"

級聯(lián)人臉檢測; 潛在SVM;HOG; 平面斑塊檢測

#include"opencv2 / calib3d / calib3d.hpp"

校準和3D標定

#include"opencv2 / ml / ml.hpp"

機器學習:聚類,模式識別

#include"opencv2 / highgui / highgui_c.h"

舊的C語言圖像顯示,滑塊,鼠標交互,I/O操作

#include"opencv2 / highgui / highgui.hpp"

新的C ++圖像顯示,滑塊,按鈕,鼠標,I/O操作

#include"opencv2 / contrib / contrib.hpp"

用戶貢獻的代碼

使用include文件opencv.hpp來包含任何可能的OpenCV函數(shù),但它會減慢編譯時間。 如果僅使用圖像處理函數(shù),僅包含opencv2 / imgproc / imgproc.hpp,則編譯時間會更快。 這些包括文件位于... / modules目錄下。 例如,imgproc.hpp位于... / modules / imgproc / include / opencv2 / imgproc / imgproc.hpp。函數(shù)源代碼位于其相應的src目錄下。 例如,imgproc模塊中的cv :: Canny()位于... / modules / improc / src / canny.cpp中。

通過包含文件,我們可以開始我們的第一個C ++ OpenCV程序。

第一個程序 - 顯示圖片

OpenCV提供了用于從各種圖像文件類型以及從視頻和相機中讀取的實用程序。 這些實用程序是名為HighGUI的工具包的一部分,該工具包包含在OpenCV包中。 下面來創(chuàng)建一個簡單的程序,用于打開圖像并將其顯示在屏幕上。

例1:一個簡單的OpenCV程序,從硬盤加載圖像并將其顯示在屏幕上

#include //為每個支持的OpenCV函數(shù)包含文件int main(int argc, char** argv){Mat img = imread("e:/picture/1.jpg", -1);if (img.empty()) return -1;cv::namedWindow("Example1", cv:: WINDOW_AUTOSIZE);cv::imshow("Example1", img);cv::waitKey(0);cv::destroyWindow("Example1");return 0;}

圖1 opencv顯示圖像

OpenCV函數(shù)位于名為cv的名稱空間內(nèi)。 要調(diào)用OpenCV函數(shù),必須通過在每個函數(shù)調(diào)用前加上cv ::來告訴編譯器使用cv命名空間。也可以使用using namespace cv; 這樣就不用每次都加上cv::。

例2采用了這種方式,同時,只使用必要的包含文件來提高編譯時間,實現(xiàn)效果與例1完全一樣。

#include "opencv2/highgui/highgui.hpp"using namespace cv;int main( int argc, char** argv ){Mat img = imread("e:/picture/1.jpg", -1);if (img.empty()) return -1;namedWindow("Example1", WINDOW_AUTOSIZE);imshow("Example1", img);waitKey(0);destroyWindow("Example1");return 0;}

下面對代碼行做一些說明。

cv::Mat img = cv::imread("e:/picture/1.jpg", -1 );

該行加載圖像。 函數(shù)cv :: imread()根據(jù)文件名確定要加載的文件格式; 它也會自動分配圖像內(nèi)存。cv :: imread()可以讀取各種圖像格式,包括BMP,DIB,JPEG,JPE,PNG,PBM,PGM,PPM,SR,RAS和TIFF。 OpenCV使用這種結(jié)構(gòu)來處理各種圖像:單通道,多通道,整數(shù)值,浮點值等。

if( img.empty() ) return -1;

檢查圖像是否實際上被讀取。

cv::namedWindow( "Example1", cv::WINDOW_AUTOSIZE );

在屏幕上打開一個窗口,該窗口可以包含和顯示圖像。

HighGUI庫提供的這個函數(shù)也為窗口指定了一個名字(在本例中為"Example1")。 與此窗口交互的HighGUI調(diào)用將通過此名稱引用它。

cv :: namedWindow()的第二個參數(shù)定義了窗口屬性。 它可以設置為0(默認值)或cv :: WINDOW_AUTOSIZE。 在前一種情況下,無論圖像大小如何,窗口的大小都是相同的,圖像將縮放以適合窗口。 在后一種情況下,窗口會在加載圖像時自動擴展或收縮,以適應圖像的真實大小,但可能會由用戶調(diào)整大小。

cv::imshow( "Example1", img );

使用cv :: imshow()將圖像顯示在窗口中。 如果不使用cv :: namedWindow(),cv :: imshow()函數(shù)將創(chuàng)建一個窗口。并且窗口將根據(jù)適當?shù)拇笮∽孕姓{(diào)整。

cv::waitKey( 0 );

cv :: waitKey()函數(shù)會要求程序停止并等待按鍵。如果參數(shù)設置為0或負數(shù),程序?qū)o限期地等待按鍵。

cv::destroyWindow( "Example1" );

銷毀窗體。 函數(shù)cv :: destroyWindow()將關閉窗口并釋放任何關聯(lián)的內(nèi)存使用情況。

總結(jié)

以上是生活随笔為你收集整理的.hpp文件_3 OpenCV的头文件说明及第一个示例程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。