java获取字符的轮廓,javacv findcontours概述图像而不是查找轮廓

我试图找出我感兴趣的区域内是否有任何矩形/正方形。这就是我到现在为止所取得的成就。

下面是我使用javacv从原始图像中截取的感兴趣区域。

Mat areaOfInterest = OpenCVUtils.getRegionOfInterest("image.jpg",295,200,23,25);

public static Mat getRegionOfInterest(String filePath , int x, int y, int width, int height){

Mat roi = null;

try{

Mat image = Imgcodecs.imread(filePath);

Rect region_of_interest= new Rect(x,y,width,height);

roi = image.submat(region_of_interest);

}catch (Exception ex){

}

return roi;

}

h7iN8.jpg

现在我想知道感兴趣的区域是否存在矩形。我也使用了以下代码行来检测这一点。

Mat gray = new Mat();

Mat binary = new Mat();

Mat hierarchy = new Mat();

ArrayList contours = new ArrayList<>();

cvtColor(image,gray,COLOR_BGR2GRAY);

Core.bitwise_not(gray,binary);

findContours(binary,contours,hierarchy,RETR_EXTERNAL,CHAIN_APPROX_NONE);

if(contours.size() > 0){

for (MatOfPoint contour:contours) {

Rect rect = boundingRect(contour);

/// x = 0, y = 1 , w = 2, h =3

Point p1 = new Point(rect.x,rect.y);

Point p2 = new Point(rect.width + rect.x, rect.height+rect.y);

rectangle(image,p1,p2,new Scalar(0,0,255));

Imgcodecs.imwrite("F:\\rect.png",image);

}

}

但它并没有在图像中找到正方形,而是将图像的各个部分勾勒出来,如下所示。

9YZHq.png

如果有人把我推向正确的方向那就太好了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值