关于矩阵映射和透视变换的参数设置

孟浩奇 发布于 2015/06/23 13:00
阅读 665
收藏 0

关于计算映射矩阵的 srcMat , dstMat . 这个参数的设置 . 

Mat src_mat = new Mat( 2 , 2 , CvType.CV_8UC3 );

是二维3通道 ? 这里面的 2 ,2  是什么意思 ? 

我无论如何设定. 最后什么也显示不出来 . 求大神解释 .


代码如下 : 

//源图像种的点

Mat src_mat = new Mat( 2 , 2 , CvType.CV_8UC3 );
src_mat.put(  0 , 0 , (int)p1.y , (int)p1.x , (int)p2.y , (int)p2.x , (int)p3.y , (int)p3.x , (int)p4.y , (int)p4.x );

//目标图像中的点
Mat dst_mat = new Mat( 2 , 2 , CvType.CV_8UC3 );
//dst_mat.put( 0 , 0 , quad.cols() , 0  , quad.cols() , quad.rows()  ,  0 , quad.rows()   );
dst_mat.put( (int)p1.y - 100 , (int)p1.x - 100 , (int)p2.y - 100 , (int)p2.x - 100 , (int)p3.y - 100 , (int)p3.x - 100 , (int)p4.y - 100 , (int)p4.x - 100 );

//计算映射矩阵
//输入原始图像和变换之后图像对应的四个点,便可以变换矩阵 (输入的不是图像,而是对应的坐标)
Mat perspective = Imgproc.getPerspectiveTransform( src_mat , dst_mat );

System.out.println(  " perspective =" + perspective.toString() );
Highgui.imwrite("C:\\img\\perspective.png",  perspective );

Mat dstMat = sourceMat.clone();
Highgui.imwrite("C:\\img\\dstMat001.png",  dstMat );

//定义目的图像 , 8位无符号整数3通道
Mat quad = Mat.zeros( sourceMat.rows() , sourceMat.cols() ,  CvType.CV_8UC3 );

//进行透视变换并显示结果

Imgproc.warpPerspective( sourceMat ,  quad ,  perspective , quad.size() );

加载中
返回顶部
顶部