- OpenCV 3.0 Computer Vision with Java
- Daniel Lélis Baggio
- 349字
- 2021-07-16 13:17:31
A Java OpenCV simple application
It's time to create a simple application that will show that we can now compile and execute Java code with OpenCV. Create a new Java class containing a Main
method and paste the code given as follows. It simply creates a 5 x 10 OpenCV matrix, sets some of its rows and columns, and prints the result to the standard output.
Make sure you load the correct dynamic link libraries through a call to System.loadlibrary("opencv_java300")
. Since, you might want to change the library version later, a better approach would be to use the Core.NATIVE_LIBARAY_NAME
constant, which will output the correct library name. You can also find this file in the code repository for chapter1
of this book, under ant/src
.
import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.CvType; import org.opencv.core.Scalar; class SimpleSample { static{ System.loadLibrary(Core.NATIVE_LIBRARY_NAME); } public static void main(String[] args) { System.out.println("Welcome to OpenCV " + Core.VERSION); Mat m = new Mat(5, 10, CvType.CV_8UC1, new Scalar(0)); System.out.println("OpenCV Mat: " + m); Mat mr1 = m.row(1); mr1.setTo(new Scalar(1)); Mat mc5 = m.col(5); mc5.setTo(new Scalar(5)); System.out.println("OpenCV Mat data:\n" + m.dump()); } }
According to Oracle's documentation, it states that, class can have any number of static initialization blocks. And they can appear anywhere in the class body. The runtime system guarantees that static initialization blocks are called in the order that they appear in the source code.
You should make sure that any calls to the OpenCV library are preceded by a single System.loadLibrary
call, in order to load the dynamic libraries. Otherwise, you will receive an java.lang.UnsatisfiedLinkError: org.opencv.core.Mat.n_Mat(IIIDDDD)J
error. This generally occurs in a static block.
If everything goes well, you should see the following output in the console:
Welcome to OpenCV 3.0.0-rc1 OpenCV Mat: Mat [ 5*10*CV_8UC1, isCont=true, isSubmat=false, nativeObj=0x2291b70, dataAddr=0x229bbd0 ] OpenCV Mat data: [ 0, 0, 0, 0, 0, 5, 0, 0, 0, 0; 1, 1, 1, 1, 1, 5, 1, 1, 1, 1; 0, 0, 0, 0, 0, 5, 0, 0, 0, 0; 0, 0, 0, 0, 0, 5, 0, 0, 0, 0; 0, 0, 0, 0, 0, 5, 0, 0, 0, 0]
- Learning Python Web Penetration Testing
- 軟件架構(gòu)設(shè)計:大型網(wǎng)站技術(shù)架構(gòu)與業(yè)務(wù)架構(gòu)融合之道
- C語言程序設(shè)計教程(第2版)
- Spring Boot+Spring Cloud+Vue+Element項目實戰(zhàn):手把手教你開發(fā)權(quán)限管理系統(tǒng)
- Creating Mobile Apps with jQuery Mobile(Second Edition)
- Visual Basic程序設(shè)計上機實驗教程
- C語言程序設(shè)計實訓(xùn)教程與水平考試指導(dǎo)
- Mockito Essentials
- 深入解析Java編譯器:源碼剖析與實例詳解
- iOS開發(fā)項目化入門教程
- 算法秘籍
- Developing Java Applications with Spring and Spring Boot
- Responsive Web Design with jQuery
- 深入理解Zabbix監(jiān)控系統(tǒng)
- Spring MVC Blueprints