nph*_*anh 5 opencv image-processing ionic-framework
我使用 OpenCV.js 将图像左右旋转,但旋转时图像被裁剪。这是我的代码:
let src = cv.imread('img');
let dst = new cv.Mat();
let dsize = new cv.Size(src.rows, src.cols);
let center = new cv.Point(src.cols/2, src.rows/2);
let M = cv.getRotationMatrix2D(center, 90, 1);
cv.warpAffine(src, dst, M, dsize, cv.INTER_LINEAR, cv.BORDER_CONSTANT, new cv.Scalar());
cv.imshow('canvasOutput', dst);
src.delete(); dst.delete(); M.delete();
Run Code Online (Sandbox Code Playgroud)
这是一个例子:
我应该怎么做才能解决这个问题?
P/s:除了javascript之外,我不知道如何使用不同的语言。
有点晚了,但考虑到 opencv.js 材料的稀缺,我将发布答案:
函数 cv.warpAffine 会裁剪图像,因为它只执行 OpenCV 和其他来源中记录的数学转换,如果您希望旋转到任何角度,则需要计算填充以进行补偿。
如果您只想旋转 90 度的倍数,您可以使用 cv.rotate,如下所示:
cv.rotate(src, dst, cv.ROTATE_90_CLOCKWISE);
Run Code Online (Sandbox Code Playgroud)
其中 src 是源图像的矩阵,dst 是目标矩阵,可以定义为空,如下所示,let dst = new cv.Mat();并且cv.ROTATE_90_CLOCKWISE是指示旋转角度的旋转标志,有三种不同的选项:
cv.ROTATE_90_CLOCKWISE
cv.ROTATE_180
cv.ROTATE_90_COUNTERCLOCKWISE
Run Code Online (Sandbox Code Playgroud)
您可以在存储库的 opencv_js.congif.py文件中找到在 OpenCV.js 上实现了哪些 OpenCV 函数,如果该函数被指示为白名单,则即使该函数未包含在 opencv.js 教程中,也可以在 opencv.js 上运行。
有关如何使用每个函数的信息可以在一般文档中找到,参数的顺序通常在 C++ 指示上指示(不要被 oscure C++ 向量类型 sintax 分散注意力)和标志的名称(像旋转标志)通常在 python 指示上指示。
| 归档时间: |
|
| 查看次数: |
3288 次 |
| 最近记录: |