C++ Opencv之3D透视变换

前言: 各位小伙伴们是不是经常出现拍摄角度不佳,看着特别难受,想把图片中的某个物体翻转一下呢? 本文就以下面这…

前言:

各位小伙伴们是不是经常出现拍摄角度不佳,看着特别难受,想把图片中的某个物体翻转一下呢?

本文就以下面这本书为例,只需要鼠标按照顺时针点击书的四个脚就可以完成变换:

侧着看好难受哦,想看正面怎么办?

效果:

舒服了!!!

目录

流程讲解:

1.先读取一个需要3D透视变换的图片,并创建一个MAT类型的图片变量,用来装处理后的图片

2.创建一个向量,用来存放鼠标点击的四个坐标点在处理后的图片变量中的位置

3.由于涉及到鼠标左键点击,需要创建一个结构体

4.创建一个刚才定义的结构体,并将读取到的原图片的图片变量保存给结构体,并调用鼠标点击函数

5.把点击的位置丢给计算函数,让其使用RANSAC算法,得出计算结果

6.结果转换,并将结果显示

7.如何使用:

所有的代码:


流程讲解:

1.先读取一个需要3D透视变换的图片,并创建一个MAT类型的图片变量,用来装处理后的图片

2.创建一个向量,用来存放鼠标点击的四个坐标点在处理后的图片变量中的位置

听着可能有点乱,但是没事,往下看就懂了,顺便show一下原图片,方便后续的鼠标操作

3.由于涉及到鼠标左键点击,需要创建一个结构体

结构体中需要有一个放原图片(方便点击产生的小点能直接显示在图片上,看起来比较直观),另一个存放鼠标点击的坐标点

4.创建一个刚才定义的结构体,并将读取到的原图片的图片变量保存给结构体,并调用鼠标点击函数

注意这个鼠标处理函数的参数为:

窗口名 鼠标处理的回调函数 处理结果产生数据保存给哪个变量

调用的回调函数:

第一个参数为鼠标点击的命令

第二、三个参数为点击的坐标

第四个参数为标记(保留,本次没有使用到)

第五个参数为传入的数据,将处理好的图片信息保存到这里,根据上面的代码,我们所传入的是一个第三点中自己创建的结构体

此回调函数的内容:

判断点击的是否为鼠标左键,如果是,则在点击位置画一个小红点,如果已经保存的小红点数目小于4个则保存小红点(为什么是4个?因为本文以书本为例,以书本的四个角来确定一本书在图片中的位置)

5.把点击的位置丢给计算函数,让其使用RANSAC算法,得出计算结果

作用:将四个鼠标点击的坐标及其框的内容,转换成刚才第二点中保存的结果图片的坐标

函数参数: 四个鼠标点击的坐标 需要转换的四个坐标 RANSAC算法的宏定义

返回值:图片变量(可以理解成保存刚才那张图片处理的格式,在下一点中可以将原图以这个规则转换成结果图)

6.结果转换,并将结果显示

将原图按照上一点中得到的计算结果,进行转换

参数: 原图 装效果图的图片变量 图片计算结果 装效果图的图片变量的大小

7.如何使用:

导入图片以后,按照顺时针点击你想要3D变换的目标(比如本例是那本书)的四个角,然后按下任意键(别是关机键。。)结果就会跳出来啦!

所有的代码:

看完别忘三连哦!您的支持是对我最大的鼓励!

博主往期的其他实用文章:

C++使用opencv调用级联分类器来识别目标物体_一个不同的ID的博客-CSDN博客前言:相较于帧差法捕捉目标物体识别,级联分类器识别目标物体更加具有针对性,使用前者只要是动的物体都会被捕捉识别到,画面里有一点风吹草动,都会被捕捉识别下来,如果我想识别具体的人或者物,都无法做到精准的目标识别,所以有了级联分类器识别(即模型识别),会按照训练好的级联分类器(模型)来进行目标识别流程讲解:1.创建一个级联分类器对象创建一个级联分类器对象,并读取已经已经训练好的模型 CascadeClassifier cascade;//级联分类器(模型) cascadehttps://blog.csdn.net/baidu_38326512/article/details/124271434?spm=1001.2014.3001.5502C++调用opencv完成运动目标捕捉_一个不同的ID的博客-CSDN博客一、原理说明:差帧识别原理:将这一帧的图像和上一帧的图像进行比对,产生变化的即为运动的目标像素块二、过程详解:1.将传入的两帧先进行灰度处理,转化将rgb类型图片转化为灰度图,可大大降低处理时间和资源消耗将转换后的图片转存至frontGray和afterGray cvtColor(frontFrame,frontGray,CV_BGR2GRAY); cvtColor(afterFrame,afterGray,CV_BGR2GRAY);2.将两帧图片进行…https://blog.csdn.net/baidu_38326512/article/details/124236389?spm=1001.2014.3001.5502

本文来自网络,不代表软粉网立场,转载请注明出处:https://www.rfff.net/p/4584.html

作者: HUI

发表评论

您的电子邮箱地址不会被公开。

返回顶部