OpenCV定位二维码的三个定位点

需求:

找到图片中的标记框,后期可以基于此实现确定纸张方向等功能。
思路:可以借鉴二维码的三点定位原理,进行实现。

巨人的肩膀:

二维码原理
OpenCV查找边框

效果:

代码运行后效果:

各个阶段的截图如图所示,右下角的三张图片(标记0-2)是能够定位出来的三个标记框

效果

原图:

原始图片

canny处理效果(找轮廓):

canny处理后的图片

依赖:

需要OpenCV的运行环境,Windows直接通过exe安装即可,Mac有些繁琐,Linux需要通过源码进行本地编译。具体参见其他资料,此处不再赘述。

<dependency>
    <groupId>org.opencv</groupId>
    <artifactId>opencv</artifactId>
    <version>3.3.0</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>
源码:
import com.stonelu.tools.opencv.OpencvUtil;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.opencv.core.*;
import org.opencv.imgproc.Imgproc;

import java.awt.*;
import java.awt.Point;
import java.util.*;
import java.util.List;

/**
 * @author stonelu
 * @date 2019-06-11 09:39
 */
public class Test {
   

    public static void main(String[] args) {
   
        findQRCode();
    }

    private static void showImg(Mat mat, String title, int idx) {
   
        ImageForm.showImage(mat, new Dimension(400, 400), title, new Point(50 * idx, 50 * idx));
    }

    private static void findQRCode() {
   
        // 测试图片
        String srcFilePath = "/Users/edz/Desktop/corner-3.jpg";
        int imIdx = 0;
        // 子轮廓个数
        int tarChildContourCnt = 4;

        List<MatOfPoint
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值