opencv放射warpAffine函数和getRotationMatrix2D函数
来源:互联网 发布:剑网3dbm数据 编辑:程序博客网 时间:2024/05/18 16:35
int main(int argc, char** argv)
{
Mat src = imread("test1.jpg", 1);
//定义两组点,代表两个三角形
Point2f srcTriangle[3];
Point2f dstTriangle[3];
Mat rotMat(2, 3, CV_32FC1);
Mat warpMat(2, 3, CV_32FC1);
Mat src1, src2, src3;
// 设置目标图像的大小和类型与源图像一致
src1 = Mat::zeros(src.rows, src.cols, src.type());
//设置源图像和目标图像上的三组点以计算仿射变换
srcTriangle[0] = Point2f(0, 0);
srcTriangle[1] = Point2f(static_cast<float>(src.cols - 1), 0);
srcTriangle[2] = Point2f(0, static_cast<float>(src.rows - 1));
dstTriangle[0] = Point2f(static_cast<float>(src.cols*0.0), static_cast<float>(src.rows*0.33));
dstTriangle[1] = Point2f(static_cast<float>(src.cols*0.65), static_cast<float>(src.rows*0.35));
dstTriangle[2] = Point2f(static_cast<float>(src.cols*0.15), static_cast<float>(src.rows*0.6));
//求得仿射变换
warpMat = getAffineTransform(srcTriangle, dstTriangle);
//对源图像应用刚刚求得的仿射变换
warpAffine(src, src1, warpMat, src1.size());
//对图像进行缩放后再旋转
// 计算绕图像中点顺时针旋转50度缩放因子为0.6的旋转矩阵
Point center = Point(src1.cols / 2, src1.rows / 2);
double angle = -30.0;
double scale = 0.8;
// 通过上面的旋转细节信息求得旋转矩阵
rotMat = getRotationMatrix2D(center, angle, scale);
// 旋转已缩放后的图像
warpAffine(src1, src2, rotMat, src1.size());
imshow("效果图", src1);
waitKey(3000);
imshow("效果图", src2);
waitKey(3000);
return(0);
}
C++: Mat getRotationMatrix2D(Point2fcenter, double angle, double scale)
第一个参数,Point2f类型的center,表示源图像的旋转中心。
C++: void warpAffine(InputArray src,OutputArray dst, InputArray M, Size dsize, int flags=INTER_LINEAR, intborderMode=BORDER_CONSTANT, const Scalar& borderValue=Scalar())
第一个参数,InputArray类型的src,输入图像,即源图像,填Mat类的对象即可。
- INTER_NEAREST - 最近邻插值
- INTER_LINEAR - 线性插值(默认值)
- INTER_AREA - 区域插值
- INTER_CUBIC –三次样条插值
- INTER_LANCZOS4 -Lanczos插值
- CV_WARP_FILL_OUTLIERS - 填充所有输出图像的象素。如果部分象素落在输入图像的边界外,那么它们的值设定为 fillval.
- CV_WARP_INVERSE_MAP –表示M为输出图像到输入图像的反变换,即 。因此可以直接用来做象素插值。否则, warpAffine函数从M矩阵得到反变换。
- opencv放射warpAffine函数和getRotationMatrix2D函数
- opencv3计算二维旋转变换矩阵getRotationMatrix2D函数和warpAffine函数
- opencv3计算二维旋转变换矩阵getRotationMatrix2D函数和warpAffine函数-滚动条
- getRotationMatrix2D函数
- warpAffine函数
- opencv 3.0 仿射变换 图形旋转 getRotationMatrix2D warpAffine
- OpenCV代码提取:warpAffine函数的实现
- 关于openCV getRotationMatrix2D 函数中平移向量的理解
- 【学习OpenCV】仿射变换函数warpAffine、旋转
- 【学习OpenCV】仿射变换函数warpAffine、旋转
- 关于cv::warpaffine函数
- 关于cv::warpaffine函数
- warpAffine函数解析
- 用OpenCV的仿射变换函数warpAffine实现图像的任意角度旋转!
- opencv3计算变换矩阵getAffineTransform函数和进行仿射变换warpAffine函数
- opencv3计算变换矩阵getAffineTransform函数和进行仿射变换warpAffine函数-滚动条
- 仿射变换函数warpAffine、旋转
- opencv 实现放射变换和投影变换
- 【新手入门 最精炼总结】AMD/CMD/CommonJs到底是什么?它们有什么区别?
- 修改配置文件导致命令不可用解决办法
- Kudu ImportCsv 行以分隔符结尾
- 【初识数据结构】预备知识
- 生成随即密码(数字加大写或者消协字母)
- opencv放射warpAffine函数和getRotationMatrix2D函数
- 为什么在Spring的配置里,最好不要配置xsd文件的版本号
- cocos2d版本api异同
- 数字化婚姻配对尝试
- 反转链表
- 【Java学习笔记】 String变量为什么是不可变的?
- Android的图片上传
- js中的三种循环(forEach、each、map)
- HSSFWorkbook导出EXCEL