想使用java做圖像處理,對比下兩張圖片的相似度。查資料發現javacv可以使用,沒想到實際操作還是困難不少。
首先,pom依賴問題:
關於maven配置問題,查看javacv的githud 網址 https://github.com/bytedeco/javacv,pom配置如下:
<dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv-platform</artifactId> <version>1.4.1</version> </dependency>
結果發現maven下載了半天依賴都下載不完,而且很多依賴可能都用不到。
接着查資料,發現這篇博客 https://blog.csdn.net/qi531621028/article/details/80172934 不錯,但是發現配置中的
<classifier>${javacpp.platform.dependencies}</classifier>會引起報錯,果斷註釋掉了。
接着寫段簡單的代碼,運行下:
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
public class ImageUtil {
public static void main(String[] args) {
Mat mat = Imgcodecs.imread("C:/Users/hspcadmin/Desktop/chrome.png");
}
}
不出所料,果斷報錯。
接着查原因顯示是opencv的dll文件未加載問題,於是搜索下載dll文件,發現CSDN上的都需要C幣才能下載,可憐沒有C幣了。只能下載opencv安裝獲取dll文件。修改代碼如下,運行成功。
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import com.tester.jmx.JmxGenerate;
public class ImageUtil {
public static void main(String[] args) {
System.load(JmxGenerate.COMMON_PATH + "opencv_java340-x64.dll");
Mat mat = Imgcodecs.imread("C:/Users/hspcadmin/Desktop/chrome.png");
}
}
注意使用System.load()而不是loadLibrary()
附上opencv的dll文件百度網盤下載鏈接,沒有C幣的同學也可以下載:
https://pan.baidu.com/s/1T7-g2TD1JdXzvugurEjNmA