基於opencv圖片切割
阿新 • • 發佈:2018-08-29
sub h+ adl write ack idt sys alt open
基於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圖片切割