Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to fix image perspective distortion and rotation with JavaScript?

I have some images that takes using mobile phone. Is there any JavaScript library which can straighten the photo of a paper and flatten it? For example I want to create a rectangular image without any distortion from this image.

In the other words I want to know how to fix perspective distortion and rotation with JavaScript?

For example I found below sample image from this article:

enter image description here

How to fix this type of image with javascript?

like image 623
b24 Avatar asked Nov 02 '15 04:11

b24


2 Answers

Looks like https://www.npmjs.com/package/perspective-transform is what you are looking for.

Create functions to map points from one arbitrary quadrilateral to another and vice versa with the inverse

like image 76
Adrien Gibrat Avatar answered Oct 11 '22 05:10

Adrien Gibrat


There is no need of any extra npm package, this can be achieved by creation a irregular crop box, first load the image into a canvas, one should adjust 4 cropping points over image, put the portion into a regular rectangular canvas.

Follow this link for detailed code and steps Image Perspective correction using javascript and opencv

Here is the demo

perspective correction javascript

let dst = new cv.Mat();
let dsize = new cv.Size(imageHeight, imageWidth);
let srcTri = cv.matFromArray(4, 1, cv.CV_32FC2, pointsArray);
let dstTri = cv.matFromArray(4, 1, cv.CV_32FC2, [0, 0, imageHeight, 0, imageHeight, imageWidth, 0, imageWidth]);
let M = cv.getPerspectiveTransform(srcTri, dstTri);
cv.warpPerspective(src, dst, M, dsize, cv.INTER_LINEAR, cv.BORDER_CONSTANT, new cv.Scalar());
document.getElementById('imageInit').style.display = "none"
cv.imshow('imageResult', dst);
like image 20
OnlyJS Avatar answered Oct 11 '22 07:10

OnlyJS