opencv 一 轮廓识别

基于opencv java api实现图像识别
需求是将图片上的房间多边形识别出来后绘制到地图上,使用户可以在地图上看房间的位置,朝向以及临街等信息并可以选择入住指定房间(给工资就干,需求合不合理我说了不算)
大致思路是识别房间拐角坐标,在根据地图api获取图片左上和右下角的坐标值(经纬度转坐标,amap googlemap地图api支持)
再根据坐标值计算每个角在地图中的坐标值,最后将地图坐标值绘制多边形
代码很多就不一一复制, 有需要代码的评论/私聊我
opencv:
1:二值获取房间矩形

 Core.inRange(src, new Scalar(0, 0, 215), new Scalar(154, 157, 243), mask);
1599467171(1).jpg

2:轮廓提取&截取房间号

Imgproc.findContours(mask, contours, new Mat(), Imgproc.RETR_EXTERNAL, 
//二值房间号房间图片
Core.inRange(mdc, new Scalar(89, 44, 28), new Scalar(113, 74, 63), make);
 //高斯模糊( 由于房间号数字之间可能存在空格高斯模糊后获取一个整体轮廓矩形)
 Imgproc.GaussianBlur(make, mk2, new Size(9, 9), 9, 9);
Imgproc.findContours(mk2, roomRectPointList, new Mat(), Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_TC89_KCOS);
//mat转bufferedImage
BufferedImage bufferedImage = ImageMatConverter.mat2BufImg(numberMat, ".png");
//tess4j 识别房间号
instance.doOCR(bufferedImage);
}

3:根据房间矩形获取房间角点
}

  //角点检测,最多8个点
  Imgproc.goodFeaturesToTrack(markMat, markOfPoint, 8, 0.1, 5);
}

原图


1599466655(1).jpg

opencv处理


1599466058(1).jpg

渲染google map


1599468010(1).jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。