【发布时间】:2017-10-13 14:11:30
【问题描述】:
我正在使用来自 opencv lib 的gpu::rotate 来顺时针旋转图像。
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/gpu/gpu.hpp>
int main()
{
cv::Mat im_in = cv::imread( "test.png" );
//upload image to GPU
cv::gpu::GpuMat gpu_im ;
gpu_im.upload( im_in ); // RAM => GPU
//Rotate from 90
cv::Size size = im_in.size();
cv::gpu::GpuMat gpu_im_rot ;
cv::gpu::rotate( gpu_im, gpu_im_rot, cv::Size( size.height, size.width ), -90, size.height-1, 0, cv::INTER_LINEAR );
gpu_im_rot.download(im_in); //GPU => RAM
cv::imwrite( "out.png", im_in );
}
输入图像
输出图像
我一直是黑线,我测试了多个移位坐标,和插值方法。
在opencv源码opencv\modules\gpu\src\imgproc.cpp中找不到真正的cuda对应代码
【问题讨论】:
-
为什么你的 y-shift 是这个:size.height-1,试试 size.height。
-
你确定黑线是因为旋转吗?
-
似乎是您的opencv版本中的错误。它在 opencv 3.2.0 上运行良好。
-
如果我使用 size.height 我有水平和垂直的黑线