Har*_*rma 6 opencv image-processing
我正在使用openCv的warpAffine()
功能来旋转图像 -
void rotateImage(const Mat &src, Mat &dest, double angle)
{
cv::Point2f point(src.cols/2, src.rows/2);
Mat rotationMatrix = cv::getRotationMatrix2D(point, angle, 1.0);
cv::warpAffine(src, dest, rotationMatrix, cv::Size(src.cols, src.rows));
}
Run Code Online (Sandbox Code Playgroud)
如果我以90度(以度为单位)的角度旋转图像,但是以任意旋转角度严重模糊图像,它可以正常工作.
例如 - 原始图像
经过多次旋转90度后 -
经过多次旋转30度后 -
那么有什么办法可以将图像旋转任意角度并避免造成模糊?
dii*_*mas 10
您可以尝试使用flags选项查看不同插值方法的结果:
INTER_NEAREST
- 最近邻插值
INTER_LINEAR
- 双线性插值(默认)
INTER_AREA
- 使用像素区域关系重新采样.它可能是图像抽取的首选方法,因为它可以提供无莫尔条纹的结果.但是当图像被缩放时,它类似于INTER_NEAREST方法.
INTER_CUBIC
- 在4x4像素邻域上的双三次插值
INTER_LANCZOS4
- 在8x8像素邻域上的Lanczos插值
例如:
cv::warpAffine(src, dest, rotationMatrix, cv::Size(src.cols, src.rows),cv::INTER_CUBIC);
由于插值,你总是会失去一些品质.最好不要在同一个图像上相继进行多次扭曲.
归档时间: |
|
查看次数: |
2465 次 |
最近记录: |