[vc_row][vc_column width=”1/1″][vc_custom_heading]MacOS – Java OpenCV Kurulumu[/vc_custom_heading][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]OpenCV, Intel Research tarafından 1999 yılında geliştirilmeye başlatılan bir görüntü işleme kütüphanesidir. C++ ile geliştirilen kütüphanenin 1.0 versiyonu 2006 yayınlanmıştır. 2.4.4 versiyonundan itibaren, Java bindingleri geliştirilmiş ve böylece java uygulamalarında kullanılmaya başlamıştır. Bünyesinde 2500’den fazla algoritma bulunan OpenCV, otonom araçlardan, dronelara kadar bir çok popüler alanda kullanılmaktadır.
Bu yazıda opencv3 kurulumu ve örnek bir java uygulaması geliştireceğiz. Öncelikle opencv3 kütüphanesinin sisteme kurulması gerekiyor. Kurulumu brew ile gerçekleştireceğiz. brew, MacOS sistemlerinde kullanılan bir package manager uygulamasıdır.
brew tap homebrew/science
brew install opencv3 --with-java --with-contrib
Bu yazının yazıldığı an itibariyle, OpenCV’nin 3.2 versiyonu yayında. Kütüphane /usr/local/Cellar/opencv3/3.2.0
klasörüne yüklenmiş olması lazım.
Repository
Ardından yeni bir maven projesi oluşturup, aşağıdaki repository tanımını pom.xml’e ekliyoruz. Native dependency’ler maven repository’de bulunmadığı için kendi repository’mizi kullanıyoruz:
<repositories> <repository> <id>kodfarki</id> <url>https://raw.githubusercontent.com/kodfarki/repository/master/</url> </repository> </repositories>
Dependencies
Aşağıdaki dependency tanımlarını pom.xml’e ekliyoruz. Listedeki opencv bağımlılıkları, eklemiş olduğumuz repository’den indirilecek:
<dependencies> <dependency> <groupId>opencv</groupId> <artifactId>opencv</artifactId> <version>3.2.0</version> </dependency> <dependency> <groupId>opencv</groupId> <artifactId>opencvjava-runtime</artifactId> <classifier>natives-osx</classifier> <version>3.2.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies>
Plugins
Ardından aşağıdaki plugin tanımlarını pom.xml’e ekliyoruz.
maven-nativedependencies-plugin adlı plugin, native bağımlılıkları target/natives altına kopyalıyor.
maven-surefire-plugin adlı plugin ise, yazacağımız testi çalıştırırken “-Djava.library.path=target/natives” parametresini java komutuna ekleyecek.
<build> <plugins> <plugin> <groupId>com.googlecode.mavennatives</groupId> <artifactId>maven-nativedependencies-plugin</artifactId> <version>0.0.7</version> <executions> <execution> <id>unpacknatives</id> <phase>generate-resources</phase> <goals> <goal>copy</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.19.1</version> <configuration> <argLine>-Djava.library.path=target/natives</argLine> </configuration> </plugin> </plugins> </build>
Örnek Kod
Aşağıdaki kod 5 satırlı 10 kolonlu bir matris üretip, ekrana basmaktadır:
public class App { 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()); } }
Kodu pratik bir şekilde koşturmak için aşağıdaki junit testini kullanacağız:
public class AppTest { @Test public void testApp() { App.main(null); } }
Kodu mvn test
komutuyla koşturabilirsiniz:
Halils-MacBook-Pro:opencv-example halil$ mvn test ... [INFO] --- maven-surefire-plugin:2.19.1:test (default-test) @ my-opencv-app --- ------------------------------------------------------- T E S T S ------------------------------------------------------- Running com.mycompany.app.AppTest Welcome to OpenCV 3.2.0 OpenCV Mat: Mat [ 5*10*CV_8UC1, isCont=true, isSubmat=false, nativeObj=0x7fe6eb630f00, dataAddr=0x7fe6eb43e1c0 ] 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] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.082 sec - in com.mycompany.app.AppTest Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.152 s [INFO] Finished at: 2017-06-08T15:46:00+03:00 [INFO] Final Memory: 18M/302M [INFO] ------------------------------------------------------------------------
Eğer matrisin içeriğini görüntüleyebildiyseniz, OpenCV kurulumunu tamamlamış ve sisteminizi OpenCV uygulaması geliştirebilir hale getirmişsiniz demektir.
Github
Kodu https://github.com/kodfarki/opencv-example adresinden klonlayabilirsiniz.
Versiyon Güncelleme
Bağımlılıkları yeni bir OpenCV versiyonu için üretmek isterseniz aşağıdaki komutları kullanarak bağımlılıkları lokal repository’ye ekleyebilirsiniz.
cd /usr/local/Cellar/opencv3/3.2.0/share/OpenCV/java/ mvn install:install-file -Dfile=opencv-320.jar -DgroupId=opencv -DartifactId=opencvjar -Dversion=3.2.0 -Dpackaging=jar mvn install:install-file -Dfile=opencv_java320.jar -DgroupId=opencv -DartifactId=opencvjava-runtime -Dversion=3.2.0 -Dpackaging=jar -Dclassifier=natives-osx
[/vc_column_text][/vc_column][/vc_row]