Java OpenCV 图像处理40 图形图像 图片裁切ROI

Java OpenCV 图像处理40 图形图像 图片裁切

在 OpenCV 中,Rect 类是用来表示矩形的数据结构,通常用于定义图像处理中的感兴趣区域(Region of Interest,ROI),或者指定图像中的某个区域的位置和大小。Rect 类位于 org.opencv.core 包中。

java 复制代码
package com.xu.opencv.image;

import java.io.File;

import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Size;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

/**
 * @author hyacint
 */
public class Cropping {

    static {
        String os = System.getProperty("os.name");
        String type = System.getProperty("sun.arch.data.model");
        if (os.toUpperCase().contains("WINDOWS")) {
            File lib;
            if (type.endsWith("64")) {
                lib = new File("lib\\opencv\\x64\\" + System.mapLibraryName("opencv_java490"));
            } else {
                lib = new File("lib\\opencv\\x86\\" + System.mapLibraryName("opencv_java490"));
            }
            System.load(lib.getAbsolutePath());
        }
    }

    public static void main(String[] args) {
        // 图片路径
        String path = "C:\\Users\\xuyq\\Desktop\\1.png";
        // 读取图片
        Mat src = Imgcodecs.imread(path);
        // 定义裁剪区域
        Rect rect = new Rect(100, 100, 300, 200);
        // 执行裁剪
        Mat dst = new Mat(src, rect);
        // 输出裁剪后的图片
        HighGui.imshow("src", resize1(src));
        HighGui.imshow("dst", dst);
        HighGui.waitKey();
    }

    /**
     * 图像缩放
     *
     * @param src 原始图片
     * @return 新图片
     */
    public static Mat resize(Mat src) {
        // 图像中心
        Point center = new Point((double) src.cols() / 4, (double) src.rows() / 4);
        // 获取 旋转 矩阵
        Mat dst = Imgproc.getRotationMatrix2D(center, 0, 0.5);
        // 进行 图像缩放
        Mat image = new Mat();
        Imgproc.warpAffine(src, image, dst, src.size());
        return image;
    }

    /**
     * 图像缩放
     *
     * @param src 原始图片
     * @return 新图片
     */
    public static Mat resize1(Mat src) {
        Size size = new Size((double) src.width() / 4, (double) src.height() / 4);
        // 执行缩小操作
        Mat dst = new Mat();
        Imgproc.resize(src, dst, size, 0, 0, Imgproc.INTER_AREA);
        return dst;
    }

}
相关推荐
小蒋观天下6 小时前
两轮车检测AI摄像头——2026行业竞争格局、商业模式与核心痛点
大数据·人工智能·安全·计算机视觉·ai大模型
小蒋观天下7 小时前
两轮车检测AI摄像头——2026-2030年未来市场规模、增长逻辑与行业天花板
大数据·人工智能·安全·计算机视觉·ai大模型
美狐美颜SDK开放平台8 小时前
直播APP开发实战:从摄像头调用到视频美颜sdk集成
android·人工智能·计算机视觉·音视频·直播美颜sdk
搞科研的小刘选手10 小时前
【工程院院士领衔 | SCI期刊专题同步征稿 | 湖南长沙举办】第五届图像处理、计算机视觉与机器学习国际学术会议(ICICML 2026)
图像处理·机器学习·计算机视觉·学术会议·会议推荐
初学大模型12 小时前
先剔后识:OpenCV三维预处理与YOLO语义检测协同的机器人视觉系统可行性分析
人工智能·opencv·yolo·计算机视觉·机器人
PascalXie12 小时前
水下机器人除了声纳,还能用什么感知方案?
计算机视觉·机器人
硅谷秋水12 小时前
RoboEdit:将人类操作视频转化为可扩展的机器人经验
人工智能·机器学习·计算机视觉·机器人
程序员JerrySUN13 小时前
Jetson边缘嵌入式实战课程第四讲:用 Yocto 定制 Jetson 系统,从开发走向产品化
arm开发·人工智能·安全·计算机视觉·目标跟踪
u01110267514 小时前
图片预览越来越占内存聊聊 URL.createObjectURL 的释放时机
图像处理·深度学习·算法·ai作画
闭包不眠15 小时前
网站支持HEIC上传要多大解码器?gzip后510KB
图像处理·人工智能·计算机视觉