opencv java 显示图片_【opencv三】利用opencv读取显示图片
在opencv中讀取顯示圖片的頭文件是highgui.hpp。
整體代碼如下,如要測試自己的圖片,需要將代碼段中的圖片地址更改為自己圖片的絕對路徑。
#include "opencv2/highgui/highgui.hpp"
using namespace cv;
int main()
{
Mat img = imread("H://vs2017//opencv_learning//ConsoleApplication1//1544516218.jpg");
if (img.empty())
{
return -1;
}
namedWindow("Example1",WINDOW_AUTOSIZE);
imshow("Example1",img);
waitKey(0);
destroyWindow("Example1");
return 0;
}
代碼解析:
Mat img = imread("Your Img Path");
imread函數:可以讀取很多類型的圖片,包括:BMP, DIB, JPEG, JPE, PNG, PBM, PGM, PPM, SR, RAS, and TIFF。最終返回一個Mat數據類型的數據,這是opencv處理的基礎數據結構。
namedWindow("Example1",WINDOW_AUTOSIZE);
namedWindow函數:在屏幕上打開一個窗口,改窗口用來顯示讀取的圖像,括號中的參數是預先定義了顯示窗口的屬性,第一個參數將窗口命名為“Example1”,第二個參數定義了窗口的屬性,該參數默認值為“0”或者置為“WINDOW_AUTOSIZE”。
參數“0”:圖片顯示的時候,不會考慮原始圖片的尺寸,會根據窗口的大小顯示。
參數“WINDOW_AUTOSIZE”:通過改變窗口尺寸,顯示圖片真實的大小。
但此時圖片還未顯示,該指令僅僅是為圖片的顯示作準備工作。一般顯示狀態如下圖所示。
imshow("Example1",img);
imshow函數:利用該函數將Mat數據結構顯示在已經存在的窗口中(由namedWindow函數生成的窗口)。根據上述的參數“WINDOW_AUTOSIZE”,窗口的大小會自動根據原始圖像的尺寸進行調整,并顯示。
waitKey(0);
waitKey函數:該函數的參數可以是任意自然數。
參數為‘0或者負數’:當讀取到鼠標點擊信號后,進入下面的程序段。
參數為“大于0的自然數”:若該自然數為1000,則其含義為程序等待1000ms(1秒)后進入下面的程序段。
Note:在cv::Mat中,當圖像超出作用域時,它們將被自動釋放,這與標準模板庫(STL)樣式的容器類類似。這個自動重分配由內部引用計數器控制。在很大程度上,這意味著我們不再需要擔心映像的分配和重新分配,這可以讓程序員從OpenCV 1.0 IplImage強加的繁瑣簿記中解脫出來。
destroyWindow("Example1");
destroyWindow函數:該函數會關掉圖片顯示窗口,并且回收內存。
在當前實例中,該函數的功能可以忽略。但未來對于更長的、更復雜的程序,程序員應該確保在超出范圍之前清理窗口,以避免內存泄漏。
總結
以上是生活随笔為你收集整理的opencv java 显示图片_【opencv三】利用opencv读取显示图片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 进入bios怎么清楚密码吗 如何清除BI
- 下一篇: java 文件读入 数组,将文本文件读