介绍
这篇文章给大家分享的是有关opencv怎么实现视场转换的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
假设我们要实现皇后这张片的视觉转换,使图像转换之后犹如我们正面看过一样
首先打开图形编辑器分别记录这张卡片四个边角的像素点
再利用原扑克的高宽比3.5例:2.5重新设置新视角的四边角像素点,具体程序如下所示:
# include & lt; iostream> # include & lt; opencv2/highgui.hpp>,//,说是说gui 具体什么gui 不清楚 # include & lt; opencv2/imgcodecs.hpp>,//,图像头文件 # include & lt; opencv2/imgproc.hpp>,//,图像处理头文件 using namespace 性传播疾病; using namespace 简历; float w =, 250,, h =, 350,,//,知道卡片的长宽分别为,2.5,cm 和,,3.5,cm 因此我们按照比例进行放大所缩小即可 Mat 矩阵,,imgWarp; int main () { ,,,string path =,“资源/cards.jpg",//,导入图形的时候,先要在右边点击显示所有文件! ! ! ,,,Mat img =, imread(路径),,//,在opencv 中所有的图像信息都使用Mat ,,,/* Queen 卡片*/,,,Point2f src[4],=,{,{66324},{338279},{89634},{404571},},,//,原坐标点的像素是使用图片编辑器一个个试出来的 ,,,Point2f dst [4],=, {{0.0 0.0 f, f}, {0.0 w, f}, {0.0 f、h}, {w h},}; ,,,matrix =, getPerspectiveTransform (src, dst);,,//,输入原位置比例及目标位置比例,返回垫类型参量 ,,,warpPerspective (img, imgWarp,,矩阵,,点(w, h)),,//,根据上步获得的参量进行位置改变 ,,,/*在原图像扑克四个顶胶绘制圆点* */,,,for (int 小姐:=,0;,小姐:& lt;, 4,,我+ +) ,,,{ ,,,,,,,圆(img, src(我),10日,标量(0,0,255),填写); ,,,} , ,,,/*,,king 卡片 ,,,//,Point2f 类即点的数据类型为,float ,,,Point2f src [4],=, {, {529142}, {771190}, {405395},, {674457},}; ,,,Point2f dst [4],=, {{0.0 0.0 f, f}, {0.0 w, f}, {0.0 f、h},, {w h},}; ,,,matrix =, getPerspectiveTransform (src, dst); ,,,warpPerspective (img, imgWarp,,矩阵,,点(w, h)); */,,,imshow (“Image",, img); ,,,imshow (“Image  Warp",, imgWarp); ,,,waitKey(0);,//,延时,0即相当于无穷大 }
感谢各位的阅读!关于“opencv怎么实现视场转换”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!