Path: blob/master/samples/java/tutorial_code/ImgTrans/remap/RemapDemo.java
16354 views
import org.opencv.core.Core;1import org.opencv.core.CvType;2import org.opencv.core.Mat;3import org.opencv.highgui.HighGui;4import org.opencv.imgcodecs.Imgcodecs;5import org.opencv.imgproc.Imgproc;67class Remap {8private Mat mapX = new Mat();9private Mat mapY = new Mat();10private Mat dst = new Mat();11private int ind = 0;1213//! [Update]14private void updateMap() {15float buffX[] = new float[(int) (mapX.total() * mapX.channels())];16mapX.get(0, 0, buffX);1718float buffY[] = new float[(int) (mapY.total() * mapY.channels())];19mapY.get(0, 0, buffY);2021for (int i = 0; i < mapX.rows(); i++) {22for (int j = 0; j < mapX.cols(); j++) {23switch (ind) {24case 0:25if( j > mapX.cols()*0.25 && j < mapX.cols()*0.75 && i > mapX.rows()*0.25 && i < mapX.rows()*0.75 ) {26buffX[i*mapX.cols() + j] = 2*( j - mapX.cols()*0.25f ) + 0.5f;27buffY[i*mapY.cols() + j] = 2*( i - mapX.rows()*0.25f ) + 0.5f;28} else {29buffX[i*mapX.cols() + j] = 0;30buffY[i*mapY.cols() + j] = 0;31}32break;33case 1:34buffX[i*mapX.cols() + j] = j;35buffY[i*mapY.cols() + j] = mapY.rows() - i;36break;37case 2:38buffX[i*mapX.cols() + j] = mapY.cols() - j;39buffY[i*mapY.cols() + j] = i;40break;41case 3:42buffX[i*mapX.cols() + j] = mapY.cols() - j;43buffY[i*mapY.cols() + j] = mapY.rows() - i;44break;45default:46break;47}48}49}50mapX.put(0, 0, buffX);51mapY.put(0, 0, buffY);52ind = (ind+1) % 4;53}54//! [Update]5556public void run(String[] args) {57String filename = args.length > 0 ? args[0] : "../data/chicky_512.png";58//! [Load]59Mat src = Imgcodecs.imread(filename, Imgcodecs.IMREAD_COLOR);60if (src.empty()) {61System.err.println("Cannot read image: " + filename);62System.exit(0);63}64//! [Load]6566//! [Create]67mapX = new Mat(src.size(), CvType.CV_32F);68mapY = new Mat(src.size(), CvType.CV_32F);69//! [Create]7071//! [Window]72final String winname = "Remap demo";73HighGui.namedWindow(winname, HighGui.WINDOW_AUTOSIZE);74//! [Window]7576//! [Loop]77for (;;) {78updateMap();79Imgproc.remap(src, dst, mapX, mapY, Imgproc.INTER_LINEAR);80HighGui.imshow(winname, dst);81if (HighGui.waitKey(1000) == 27) {82break;83}84}85//! [Loop]86System.exit(0);87}88}8990public class RemapDemo {91public static void main(String[] args) {92// Load the native OpenCV library93System.loadLibrary(Core.NATIVE_LIBRARY_NAME);9495new Remap().run(args);96}97}9899100