OpenCV JavaScript版本,使用getPerspectiveTransform,PerspectiveTransform方法。
JavaScript和python版本不同的是Mat的创建方法不同,python会在内部自动把数据转换成Mat类,也JavaScript不会,所以刚开始没有找到JavaScript创建Mat方法,走了很多弯路。
这只是测试代码,没有使用项目中真实的数据,所有有一定的偏差。
如果有什么错误,欢迎纠正。
下面上代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello OpenCV.js</title>
</head>
<body>
<h2>Hello OpenCV.js</h2>
<h2>getPerspectiveTransform,PerspectiveTransform方法使用</h2>
<p id="status">OpenCV.js is loading...</p>
<div>
<button onClick="myclick()">输出结果</button>
</div>
<script type="text/javascript">
function myclick() {
//代码 getPerspectiveTransform
//创建数据
let srcTri = cv.matFromArray(4, 1, cv.CV_32FC2, [56, 65, 368, 52, 28, 387, 389, 390]);
let dstTri = cv.matFromArray(4, 1, cv.CV_32FC2, [0, 0, 300, 0, 0, 300, 300, 300]);
//转换的数据
let M = cv.getPerspectiveTransform(srcTri, dstTri);
console.log("getPerspectiveTransform M", M);
//==== PerspectiveTransform ======
//point点的数据一定要是一维的,opencv会自己去处理
let points = [
1, 2,
3, 4,
5, 6,
7, 8
];
//原数据
points = cv.matFromArray(4,1,cv.CV_32FC2,points);
//转换后的数据
let points_trans = new cv.Mat();
cv.perspectiveTransform(points, points_trans,M);
console.log("points", points);
console.log("points_trans", points_trans);
}
function onOpenCvReady() {
document.getElementById('status').innerHTML = 'OpenCV.js is ready.';
}
</script>
<script async src="https://docs.opencv.org/4.x/opencv.js" onload="onOpenCvReady();" type="text/javascript"></script>
<script src="https://docs.opencv.org/4.x/utils.js" type="text/javascript"></script>
</body>
</html>
getPerspectiveTransform结果
perspectiveTransform结果