基于opencv图片切割

Posted nyatom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于opencv图片切割相关的知识,希望对你有一定的参考价值。

  基于opencv图片切割为n个3*3区块

  工作原因,切割图片,任务急,暂留调通的源码,留以后用.

package com.rosetta.image.test;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Rect;
import org.opencv.highgui.Highgui;

/**
 * @Author: nya
 * @Date: 18-8-28 下午5:50
 */
public class SplitImage {

    public static void main(String[] args ){
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        Mat image = Highgui.imread("/home/han/images/55.png");
        //System.out.println( "mat = " + image.dump() );

        int m = 5;
        int n = 5;

        int height = image.rows();
        int width  = image.cols();
        System.out.println("height:"+height+" width:"+width);
        int ceil_height = height/m;
        int ceil_width  = width/n;
        System.out.println("ceil_height:"+ceil_height+" ceil_width:"+ceil_width);

        String filename = "/home/han/images/split/sub";

        int x = m / 3;
        int y = m % 3;
        int z = (x - 1) * 3 + y + 1;
        for(int i = 0; i<z; i++ ) {
            for(int j = 0; j<z; j++){
                int a = i * ceil_width ;
                int b = j * ceil_height;
                System.out.println(a+","+b+","+ceil_width+","+ceil_height);
                Rect rect = new Rect(a,b,3*ceil_width,3*ceil_height);
                Mat roi_img = new Mat(image,rect);
                //Mat tmp_img = new Mat();

                //roi_img.copyTo(tmp_img);

                Highgui.imwrite(filename+"_"+i+"_"+j+".jpg", roi_img);
            }
        }
    }

}

  图片素材

技术分享图片

以上是关于基于opencv图片切割的主要内容,如果未能解决你的问题,请参考以下文章

基于python语言的opencv如何把图片中指定区域截取出来?

Python3 识别验证码(opencv-python)

图像切割—基于图的图像切割(Graph-Based Image Segmentation)

使用opencv,对一个已经二值化的身份证图像,怎么样将身份证号码所在的图像切割出来?

利用OpenCV对图像进行裁剪

opencv如何读入图片