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结果

0 回應:
張貼留言