OpenCV-Java版學習(2.影像入門)
影像入門
一.在Java中使用OpenCV注意事項
1.解決awt報錯問題
先給大家貼個錯誤,如下圖:
我們在使用awt處理影像的時候報了這個異常,HeadlessException 異常是在環境中不支援鍵盤、顯示器或滑鼠的環境中呼叫與鍵盤、顯示器或滑鼠有關的程式碼時,被丟擲的異常。
網上有幾種解決方法,比較方便的一種解決方法如下:
System.setProperty("java.awt.headless", "false");
這段程式碼啟用了Headless模式,Headless模式是系統的一種配置模式。在該模式下,系統缺少了顯示裝置、鍵盤或滑鼠。
這段程式碼相當於告訴程式,現在你要工作在Headless模式下,就不要指望硬體幫忙了,你得自力更生,依靠系統的計算能力模擬出這些特性來。
2.載入動態庫
這裡我們在Java中呼叫一下dll就行了,如下:
URL url = ClassLoader.getSystemResource("lib/opencv/opencv_java451.dll");//這裡的dll根據你自己的實際情況寫
System.load(url.getPath());
二.讀取影像和顯示影像
在OpenCV中我們可以使用imread()函式來進行影像的讀取。影像的工作目錄或影像的完整路徑應給出。
該函式的定義如下:
static Mat imread(String filename) 大連無痛人流哪家好
static Mat imread(String filename, int flags)
flags是一個標誌,它表示以何種方式來讀取影像,它有常用的3個值,如下:
IMREAD_COLOR = 1:載入彩色影像。任何影像的透明度都會被忽視。它是預設標誌;
IMREAD_GRAYSCALE = 0:以灰度模式載入影像;
IMREAD_UNCHANGED = -1:載入影像,包括alpha通道。
當然我們也可以在原始碼中檢視其他的值,如下:
在OpenCV中我們可以使用imshow()函式來在視窗中顯示影像,視窗自動適應影像的尺寸,該函式使用如下:
public static void imshow(String winname, Mat img);
第一個引數是視窗名稱,它是一個字串。第二個引數是我們讀取圖片的物件。
影像讀取和顯示的程式碼如下:
import org.junit.jupiter.api.Test;
import org.opencv.core.Mat;
import org.springframework.boot.test.context.SpringBootTest;
import java.net.URL;
import static org.opencv.highgui.HighGui.*;
import static org.opencv.imgcodecs.Imgcodecs.imread;
@SpringBootTest
class DemoApplicationTests { @Test public void testOpencv1() throws Exception { // 解決awt報錯問題 System.setProperty("java.awt.headless", "false"); // 載入動態庫 URL url = ClassLoader.getSystemResource("lib/opencv/opencv_java451.dll"); System.load(url.getPath()); // 讀取影像,以彩色模式(1)顯示,0是灰度模式,-1是載入影像,包括alpha通道 Mat src = imread("D:\\OpenCV_Study\\demo1\\src\\main\\resources\\image\\test1.jpg",1); if (src.empty()) { throw new Exception("image is empty"); } imshow("image",src); waitKey(0); destroyAllWindows(); }
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70005147/viewspace-2788140/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 醫學影像分析入門
- node.js學習之npm 入門 ——2.《下載和管理npm》Node.jsNPM
- 2.影像的載入與儲存
- 影像的入門
- 前端學習 node 快速入門 系列 —— 簡易版 Apache前端Apache
- ROS入門學習ROS
- nuxt 入門學習UX
- Nginx入門學習Nginx
- mybatis入門學習MyBatis
- Linux入門學習Linux
- GORM學習入門GoORM
- Vue入門學習Vue
- MyBatisPlus入門學習MyBatis
- spring入門學習Spring
- SVG 影像入門教程SVG
- opencv 影像的入門OpenCV
- Egg入門學習(一)
- leaflet學習一 入門
- Mybatis框架 入門學習MyBatis框架
- RPC學習入門(轉)RPC
- Nacos整合學習入門
- Nestjs入門學習教程JS
- JavaScript入門學習學習筆記(上)JavaScript筆記
- 【視訊】Entity Framework Core 2.* 入門教程Framework
- 如何學習Python?Python學習入門路線Python
- 機器學習和深度學習概念入門機器學習深度學習
- 跟我學Python影像處理丨帶你入門OpenGLPython
- git入門學習筆記Git筆記
- iOS入門學習計劃iOS
- Docker入門學習筆記Docker筆記
- gRPC入門學習之旅(六)RPC
- gRPC入門學習之旅(四)RPC
- gRPC入門學習之旅(三)RPC
- gRPC入門學習之旅(一)RPC
- Unity學習筆記--入門Unity筆記
- gRPC入門學習之旅(五)RPC
- gRPC入門學習之旅(二)RPC
- TS入門學習筆記筆記