【问题标题】:How to resize an image in Java with OpenCV?如何使用 OpenCV 在 Java 中调整图像的大小?
【发布时间】:2014-01-21 01:01:27
【问题描述】:

裁剪图像后如何调整大小?

Mat croppedimage = cropImage( image, rect );
Mat resizeimage = croppedimage.resize( any dimension ); //need to change this line

【问题讨论】:

  • 标题说“如何使用opencv调整图像大小”,但答案描述了调整“裁剪图像”而不是Java文件或Java缓冲图像或其他东西的大小。所以我的问题是“如何从 BufferedImage 或至少 File 中获取 Mat 对象?”

标签: java opencv image-resizing


【解决方案1】:

我想,你想要this

例如

Mat croppedimage = cropImage(image,rect);
Mat resizeimage = new Mat();
Size sz = new Size(100,100);
Imgproc.resize( croppedimage, resizeimage, sz );

【讨论】:

  • 如果我希望应用程序计算大小,我应该为大小添加什么。例如。 fx = 0.5 和 fy = 0.5。尝试将 0 和 Size() 设置为 dsize 但不起作用。
【解决方案2】:

如果您想使用 OpenCV java 缩放图像,请执行以下操作:

  import static org.opencv.imgproc.Imgproc.*;
  import static org.opencv.imgcodecs.Imgcodecs.imread;

主要代码:

   Mat src  =  imread("imageName.jpg");
   Mat resizeimage = new Mat();
   Size scaleSize = new Size(300,200);
   resize(src, resizeimage, scaleSize , 0, 0, INTER_AREA);

对于缩小,建议使用:INTER_AREA,对于放大,建议使用 INTER_CUBIC

更多详情:OpenCV Ref for Resize

【讨论】:

    【解决方案3】:
    1. 请阅读c++方法Resize的手册,与java相同。

    2. 您可以选择一种插值类型。在某些情况下,获得最佳结果很重要。

      Mat croppedImage = cropImage(image,rect);
      Mat resizeImage = new Mat(anyHeight, anyWidth, croppedImage.type());   
      int interpolation = Imgproc.INTER_CUBIC;   
      Imgproc.resize(croppedImage, resizeImage, resizeImage.size(), 0, 0, interpolation );
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 2013-03-11
      • 1970-01-01
      • 2018-11-20
      • 2015-04-16
      • 1970-01-01
      相关资源
      最近更新 更多