opencv实现视场转换
【opencv实现视场转换】本文实例为大家分享了opencv实现视场转换的具体代码,供大家参考,具体内容如下
假设我们要实现QUEEN 这张片的视觉转换,使图像转换之后犹如我们正面看过一样
文章图片
首先打开图形编辑器分别记录这张卡片四个边角的像素点
文章图片
再利用原扑克的高宽比例 3.5:2.5 重新设置新视角的四边角像素点,具体程序如下所示:
#include#include // 说是说gui 具体什么gui 不清楚#include // 图像头文件#include // 图像处理头文件using namespace std; using namespace cv; float w = 250, h = 350; // 知道卡片的长宽分别为 2.5 cm 和3.5 cm 因此我们按照比例进行放大所缩小即可Mat matrix, imgWarp; int main(){string path = "resources/cards.jpg"; // 导入图形的时候,先要在右边点击显示所有文件!!!Mat img = imread(path); // 在opencv 中所有的图像信息都使用Mat /*Queen 卡片*/Point2f src[4] = { {66,324},{338,279},{89,634},{404,571} }; // 原坐标点的像素是使用图片编辑器一个个试出来的Point2f dst[4] = { {0.0f,0.0f},{w,0.0f},{0.0f,h},{w,h} }; matrix = getPerspectiveTransform(src, dst); // 输入原位置比例及目标位置比例,返回Mat类型参量warpPerspective(img, imgWarp, matrix, Point(w, h)); // 根据上步获得的参量进行位置改变/*在原图像扑克四个顶胶绘制圆点**/for (int i = 0; i < 4; i++){circle(img, src[i], 10, Scalar(0, 0, 255),FILLED); } /*king 卡片// Point2f 类即点的数据类型为 float Point2f src[4] = { {529,142},{771,190}, {405,395}, {674,457} }; Point2f dst[4] = { {0.0f,0.0f},{w,0.0f},{0.0f,h} ,{w,h} }; matrix = getPerspectiveTransform(src, dst); warpPerspective(img, imgWarp, matrix, Point(w, h)); */imshow("Image", img); imshow("Image Warp", imgWarp); waitKey(0); // 延时,0即相当于无穷大}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Java|Java OpenCV图像处理之SIFT角点检测详解
- Node.js中readline模块实现终端输入
- java中如何实现重建二叉树
- 人脸识别|【人脸识别系列】| 实现自动化妆
- paddle|动手从头实现LSTM