java opencv 基本操作5

图片翻转flip


    //flip(
    //      Mat src, // 输入图像
    //		Mat dst, // 输出
    //		int flipCode = 0 // >0: 沿y-轴翻转, 0: 沿x-轴翻转, <0: x、y轴同时翻转
    //	);
    public void testFlip() {
        Mat src = GeneralUtils.converMat("C:\\图片\\test\\0001.jpg");

        Mat dst = new Mat();
        //X 方向翻转
        Core.flip(src, dst, 0);
        GeneralUtils.saveByteImg(dst, "C:\\图片\\test\\xFlip.jpg");
        //y 方向翻转
        Core.flip(src, dst, 1);
        GeneralUtils.saveByteImg(dst, "C:\\图片\\test\\yFlip.jpg");

        //对角翻转
        Core.flip(src, dst, -1);
        GeneralUtils.saveByteImg(dst, "C:\\图片\\test\\xyFlip.jpg");

    }

图片放大缩小resize

  //resize (Mat src, Mat dst, Size dsize, double fx = 0, double fy = 0,int interpolation = INTER_LINEAR)
    //参数
    //src - 输入图像。
    //dst - 输出图像;它的大小为 dsize(当它非零时)或从 src.size()、fx 和 fy 计算的大小;dst 的类型与 src 的类型相同。
    //dsize - 输出图像大小;如果它等于零,则计算为:dsize = Size(round(fx*src.cols), round(fy*src.rows))。dsize 或 fx 和 fy 必须为非零。
    //fx - 沿水平轴的比例因子;当它等于 0 时,它被计算为(double)dsize.width/src.cols()
    //fy - 沿垂直轴的比例因子;当它等于 0 时,它被计算为(double)dsize.height/src.rows()
    //插值 - 插值方法 InterpolationFlags :
    //INTER_NEAREST- 最近邻插值(最近邻插值) -
    //INTER_LINEAR双线性插值(默认使用)
    //INTER_AREA- 使用像素区域关系重采样。它可能是图像抽取的首选方法,因为它可以提供无莫尔条纹的结果。但是当图像被缩放时,它类似于 INTER_NEAREST 方法。
    //INTER_CUBIC- 4x4 像素邻域上的双三次插值
    //INTER_LANCZOS4- 8x8 像素邻域上的 Lanczos 插值
    public void testResize() {
        Mat src = GeneralUtils.converMat("C:\\图片\\test\\0001.jpg");

        int h = src.rows();
        int w = src.cols();
        float fx = 0f;
        float fy = 0f;
        Mat dst = Mat.zeros(src.size(), src.type());

        //INTER_NEAREST 最近邻插值(最近邻插值)
        Imgproc.resize(src, dst, new Size(2 * w, 2 * h), fx , fy, Imgproc.INTER_NEAREST);
        GeneralUtils.saveByteImg(dst, "C:\\图片\\test\\INTER_NEAREST.jpg");

        //INTER_LINEAR双线性插值(默认使用)
        Imgproc.resize(src, dst, new Size(2 * w, 2 * h), fx , fy, Imgproc.INTER_LINEAR);
        GeneralUtils.saveByteImg(dst, "C:\\图片\\test\\INTER_LINEAR.jpg");

        //INTER_AREA- 使用像素区域关系重采样。
        Imgproc.resize(src, dst, new Size(2 * w, 2 * h), fx , fy, Imgproc.INTER_AREA);
        GeneralUtils.saveByteImg(dst, "C:\\图片\\test\\INTER_AREA.jpg");

        //INTER_CUBIC- 4x4 像素邻域上的双三次插值
        Imgproc.resize(src, dst, new Size(2 * w, 2 * h), fx , fy, Imgproc.INTER_CUBIC);
        GeneralUtils.saveByteImg(dst, "C:\\图片\\test\\INTER_CUBIC.jpg");

        //INTER_LANCZOS4- 8x8 像素邻域上的 Lanczos 插值
        Imgproc.resize(src, dst, new Size(2 * w, 2 * h), fx , fy, Imgproc.INTER_LANCZOS4);
        GeneralUtils.saveByteImg(dst, "C:\\图片\\test\\INTER_LANCZOS4.jpg");

    }

画矩形,直线,圆,椭圆


    public void testDraw() {
        //创建图片,并设置白色背景
        Mat src = Mat.zeros(new Size(300, 300), CvType.CV_8UC3);
        src.setTo(new Scalar(255, 255, 255));

        //画直线
        Imgproc.line(src, new Point(100, 100), new Point(200, 200), new Scalar(0, 0, 0), 1, Imgproc.LINE_AA, 0);

        //画矩形
        Imgproc.rectangle(src, new Point(100, 100), new Point(200, 200), new Scalar(255, 255, 0), 2, Imgproc.LINE_4, 0);

        //画圆
        Imgproc.circle(src, new Point(100, 100), 50, new Scalar(0, 0, 255), 2, Imgproc.LINE_AA, 0);

        //画椭圆
        Imgproc.ellipse(src, new Point(100, 100), new Size(100, 50), 360, 0, 360, new Scalar(0, 255, 0), 2, Imgproc.LINE_AA, 0);

        GeneralUtils.saveByteImg(src, "C:\\图片\\test\\draw.jpg");
    }

对应GeneralUtils如下:GeneralUtils

《针灸学》

求关注!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

古智云开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值