我想在我的代码中声明一个cv :: Mat对象和其他地方,改变它的维度(nrows和ncols).我在OpenCV的文档中找不到任何方法.他们总是建议在构造函数中包含维度.
一种简单而干净的方法是使用该create()
方法。您可以根据需要多次调用它,当其参数与现有缓冲区不匹配时,它将重新分配图像缓冲区:
Mat frame;
for(int i=0;i<n;i++)
{
...
// if width[i], height[i] or type[i] are != to those on the i-1
// or the frame is empty(first loop)
// it allocates new memory
frame.create(height[i], width[i], type[i]);
...
// do some processing
}
Run Code Online (Sandbox Code Playgroud)
文档可在https://docs.opencv.org/3.4/d3/d63/classcv_1_1Mat.html#a55ced2c8d844d683ea9a725c60037ad0 获得
如果您要调整图像大小,请检查resize()
!
Mat dst
使用所需的维度和数据类型创建一个新的,然后:
cv::resize(src, dst, dst.size(), 0, 0, cv::INTER_CUBIC);
Run Code Online (Sandbox Code Playgroud)
还有其他插值方法cv::INTER_CUBIC
,检查文档.
归档时间: |
|
查看次数: |
26270 次 |
最近记录: |