java OpenCV实现扫描仪图片倾斜矫正

这篇博客介绍了如何使用Java结合OpenCV进行扫描仪图片的倾斜矫正。首先从官网或网盘下载OpenCV资源,将jar包导入IDE并配置动态库。文中提到了两种方法,一种直接使用OpenCV的霍夫检测算法,但会导致图片放大,另一种则是通过霍夫检测计算角度,利用Graphics2D旋转图片。在实际应用中遇到接口调用报错,原因是找不到opencv动态库路径,解决方案包括设置System.loadLibrary或System.load,并调整环境变量。最后,由于maven仓库缺少opencv-455.jar,需要在pom.xml中配置system scope来打包项目。
摘要由CSDN通过智能技术生成

首先先去opencv官网下载资源

官网地址:Releases - OpenCV

官网下载慢可以选择在百度网盘下载,版本是455

链接:https://pan.baidu.com/s/1LADtih8l8nStKwJRIde91Q 
提取码:wx0h

提示:以下方法只适用于小角度倾斜,90度这种无法矫正!!!

下载之后解压,\opencv\build\java下有个jar包,需要导入到ide中,该目录下还有x64和x86两个文件夹,是opencv的动态库,根据自己电脑来选择使用,opencv的接口都在动态库里,很重要!

导入jar包,引入opencv的动态库

后续会用到PngEncoder,需要导入包

<!-- png图片处理 -->
<dependency>
	<groupId>com.pngencoder</groupId>
	<artifactId>pngencoder</artifactId>
	<version>0.9.0</version>
</dependency>

后面就是具体的代码开发,第一个方法是用opencv的霍夫检测算法计算倾斜角度并旋转,但是因为修改后图片比原图大了十几倍,放弃了,知道的大佬可以指导下怎么在不改变图片的分辨率和清晰度缩小图片。

public static void first () {
    try {
        //输入图片路径
        String srcPath = "D:\\TU\\x7.png";
        //输出图片路径
        String rotatePath = "D:\\TU\\rotate.png";
        //加载opencv动态库,必要
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        //输入图片
        Mat src = Imgcodecs.imread(srcPath);
        //灰度化
        Mat gray = new Mat();
        if (src.channels() == 3) {
            Imgproc.cvtColor(src, gray, Imgproc.COLOR_BGR2GRAY);
            src = gray;
        } else {
            System.out.println("不是RGB图片!");
        }
        //边缘算法检测
        Mat cannyMat = src.clone();
        //表示迟滞过程的第一个阈值
        double threshold1 = 60;
        //表示迟滞过程的第二个阈值,通常把第一个阈值*2或*3
        double threshold2 = threshold1 * 3;
        Imgproc.Canny(src, cannyMat, threshold1, threshold2);
        //计算倾斜角度
        double angle =
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值