#include "stdafx.h"
#include "Opencv_ImageTransformations.h"
using namespace cv;
Opencv_ImageTransformations::Opencv_ImageTransformations()
{
}
Opencv_ImageTransformations::~Opencv_ImageTransformations()
{
}
void Opencv_ImageTransformations::Opencv_convertMaps(Mat map1, Mat map2, Mat &dstmap1, Mat &dstmap2)
{
// 将图像从一种数据类型转换到另一种数据类型
// 输入的map1的数据类型必须是:CV_16SC2, CV_32FC1, or CV_32FC2 .
// 输入的map2的数据类型必须是:CV_16UC1, CV_32FC1或者是一个空矩阵.
// dstmap1type 第一个输出的map的数据类型是:CV_16SC2, CV_32FC1, or CV_32FC2
convertMaps(map1, map2, dstmap1, dstmap2, CV_32FC1);
}
void Opencv_ImageTransformations::Opencv_getAffineTransform(Mat map1, Mat &dstmap1, bool bRotate)
{
if (bRotate)
{
Point2f srcTri[3];
Point2f dstTri[3];
srcTri[0] = Point2f(0, 0);
srcTri[1] = Point2f(map1.cols - 1, 0);
srcTri[2] = Point2f(0, map1.rows - 1);
dstTri[0] = Point2f(map1.cols*0.0, map1.rows*0.33);
dstTri[1] = Point2f(map1.cols*0.85, map1.rows*0.25);
dstTri[2] = Point2f(map1.cols*0.15, map1.rows*0.7);
Mat dstmap = getAffineTransform(srcTri, dstTri);
warpAffine(map1, dstmap1, dstmap, map1.size());
}
else
{
Mat dstmap = getRotationMatrix2D(Point(map1.cols / 2, map1.rows/2), 270, 1);
warpAffine(map1, dstmap1, dstmap, map1.size());
}
}
void Opencv_ImageTransformations::Opencv_getDefaultNewCameraMatrix()
{
}
void Opencv_ImageTransformations::Opencv_getPerspectiveTransform(Mat map1, Mat &dstmap1)
{
Point2f srcTri[4];
Point2f dstTri[4];
srcTri[0] = Point2f(0, 0);
srcTri[1] = Point2f(map1.cols - 1, 0);
s
opencv 形状变换 图像阈值 仿射变换
最新推荐文章于 2022-10-11 11:02:52 发布
本文档介绍了使用OpenCV进行图像变换,包括仿射变换、旋转、透视变换、极坐标变换等,并展示了如何应用自适应阈值、颜色变换、距离变换等图像处理技术。
摘要由CSDN通过智能技术生成