嵌入式c c++开发笔记(opencv图片,视频的翻转,截取,旋转)
opencv使用2
老规矩,先引用头文件,看情况引用
#include <opencv2/opencv.hpp>
#include <iostream>
#include "opencv2/highgui.hpp"
#include <opencv2/imgproc.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/core.hpp>
#include <opencv2/objdetect.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/highgui/highgui_c.h>
using namespace std;
using namespace cv;
1.图像翻转
获取图像后,通过flip翻转,此方法同样适用于视频帧的翻转
注意:翻转后的图片,如果用于识别二维码,会识别不到。
flip函数是矩阵或者图像翻转,其实图像的本质也是矩阵。
flip(Mat src, Mat dst, int flipCode)
flipCode,翻转模式,flipCode==0垂直翻转(沿X轴翻转),flipCode>0水平翻转(沿Y轴翻转),flipCode<0水平垂直翻转(先沿X轴翻转,再沿Y轴翻转,等价于旋转180°)
int main(){Mat start=imread("start.jpg", -1); //读取图片Mat tempimage; //实例化一个Mat,用来存放翻转后的图片flip(start,tempimage,1); //第一个参数为初始Mat,第二个参数为翻转后的Matimshow("原图",start);imshow("翻转后的图",tempimage);waitKey(0); //一直等待}
2.图像截取
获取原图像后,通过rect指定一个方块,然后copyto 另一个图像
代码如下
int main(){Mat start=imread("start.jpg", -1); //读取图片Mat tempimage; //实例化一个Mat,用来存放截取后的图片Rect r1(681,151,400,400); //定义一个r1的区域,前两个参数为区域左上角的X,Y坐标,后两个为区域的宽和高start(r1).copyTo(tempimage); //截取start图片 r1区域的图像,并放到tempimage里imshow("原图",start);imshow("截取后的图",tempimage);waitKey(0); //一直等待}
3.图像旋转任意角度
获取原图像后,指定一个旋转中心点,一个旋转角度,就可以玩转图片
int main(){Mat start=imread("start.jpg", -1); //读取图片Mat tempimage; //实例化一个Mat,用来存放旋转后的图片Point center = Point(start.cols / 2, start.rows / 2); //指定一个旋转中心点,我这边指定的是图片中心点int angle=90;Mat affine_matrix = getRotationMatrix2D(center, angle, 1.0); //定义旋转矩阵warpAffine(rgb_image, tempimage, affine_matrix, rgb_image.size()); //仿射变换,将旋转后的图存到tempimage里面imshow("原图",start);imshow("旋转后的图",tempimage);waitKey(0); //一直等待}
warpAffine后面还有好几个参数可以设置,具体如下,有兴趣可以深入研究一下。最后一个参数可以设置填充色,默认填充色为黑色。Scalar(255,255,255)为白色
warpAffine(rgb_image, tempimage, affine_matrix, rgb_image.size(),1,0,Scalar(255,255,255)); //仿射变换,将旋转后的图存到tempimage里面
void cv::warpAffine ( InputArray src,OutputArray dst,InputArray M,Size dsize,int flags = INTER_LINEAR,int borderMode = BORDER_CONSTANT,const Scalar & borderValue = Scalar() )
src:输入图像
dst:输出图像
M:旋转矩阵
dsize:输出图像的尺寸
flags:插值方法,默认为线性插值(这里可以添加 WARP_INVERSE_MAP 使得转换变为从 dst 转到 src)
borderMode:像素外推法(默认为 BORDER_CONSTANT)
borderValue :当时像素外推法设定为 BORDER_CONSTANT 时候,此处可以设定具体的 border 值,默认为 0
嵌入式c c++开发笔记(opencv图片,视频的翻转,截取,旋转)相关推荐
- python opencv 图片/视频 拼接
python opencv 图片/视频 拼接 # coding: utf-8 # 像写诗一样写代码 import numpy as np import cv2img_A_path = "C: ...
- 嵌入式Linux系统开发笔记(七)
嵌入式Linux系统开发笔记(七) 七.U-Boot基础 1.概述 在移植 Linux之前我们需要先移植一个 bootloader 代码,这个 bootloader 代码用于启动 Linux 内核, ...
- 【嵌入式硬件芯片开发笔记】4-20mA DAC芯片AD5421配置流程
[嵌入式硬件芯片开发笔记]4-20mA DAC芯片AD5421配置流程 16位.串行输入.环路供电.4 mA至20 mA DAC 可用于HART协议相关电路 同AD5700配合使用 AD5421的SP ...
- 【嵌入式硬件芯片开发笔记】HART调制解调器AD5700芯片配置流程
[嵌入式硬件芯片开发笔记]HART调制解调器AD5700芯片配置流程 低功耗HART调制解调器 适用于AD5700/AD5700-1 我的是XTAL_EN接地,CLK_CFG的两个引脚由同一个GPIO ...
- 【嵌入式硬件芯片开发笔记】HART协议调制解调芯片AD5700配置流程
[嵌入式硬件芯片开发笔记]HART协议调制解调芯片AD5700配置流程 XTAL_EN接地,CLK_CFG的两个引脚由同一个GPIO控制 初始时HART_CLK_CFG输出低电平 由RTS引脚控制调制 ...
- 嵌入式Linux系统开发笔记(二)
嵌入式Linux系统开发笔记(二) 二.Linux C 编程 1.设置VI编辑器TAB 键为 4 字节 VI 编辑器默认 TAB 键为 8 空格,我们改成 4 空格,用 vi 打开文件/etc/vim ...
- 嵌入式c c++开发笔记(opencv两图像叠加)
两图像叠加 可以是两个图片,也可以是视频和图片 先引用头文件 #include <opencv2/opencv.hpp> // Include OpenCV API #include &l ...
- 【音视频开发笔记】音视频基础
音频基础 声音的定义 声音是振动产生的声波,通过介质(气体.固体.液体)传播并能被人或动物听觉器官所感知的波动现象. 如何分析声音 我们通常听见的声音,是由于物体振动导致空气分子按照一定的频率产生疏密 ...
- 安卓开发笔记——关于图片的三级缓存策略(内存LruCache+磁盘DiskLruCache+网络Volley)...
在开发安卓应用中避免不了要使用到网络图片,获取网络图片很简单,但是需要付出一定的代价--流量.对于少数的图片而言问题不大,但如果手机应用中包含大量的图片,这势必会耗费用户的一定流量,如果我们不加以处理 ...
- 《嵌入式系统 - RT-Thread开发笔记》手把手教你使用RT-Thread制作GD32 RISC-V系列BSP
熟悉RT-Thread的朋友都知道,RT-Thread提供了许多BSP,但不是所有的板子都能找到相应的BSP,这时就需要移植新的BSP.RT-Thread的所有BSP中,最完善的BSP就是STM32系 ...
最新文章
- Git学习笔记07-删除文件
- 数据不够怎么训练深度学习模型?不妨试试迁移学习 ——重用神经网络的结构2...
- python一点基础都没有的怎么办-Python基础常见问题总结(一)
- cout 输出指定位数,不足补0
- Spring Cloud Gateway 源码解析(3) —— Predicate
- Android (cocos2dx 网络访问)访问权限设置
- ios APP进程杀死之后和APP在后台接收到推送点击跳转到任意界面处理
- 【python】 调用selenium中 ChromeDriver不匹配的问题
- python pil怎么调用_python3如何使用pil
- 我所熟悉的网站负载均衡技术之硬件篇
- 春节返乡,到底返的是什么?
- 解决办法:atoi不能将CString 转化为char *
- 3.新建页面以及添加路由 2021-07-11
- DOS 批处理高级教程精选合编20080331
- postgresql用户和角色
- 面试题:spring的循环依赖问题以及如何解决
- 【转载】20个2013年最值得关注的网页设计趋势
- 蓝桥杯刷题冲刺 | 倒计时28天
- 游戏开发中常用的算法1(20道题一篇文章)
- html中设置页面正在加载,在加载Web页面时显示正在等待的窗体
热门文章
- 3D点云深度学习综述
- 视频水印去除工具哪个好
- 用计算机如何打对数,怎样使用科学计算器计算对数?
- 职称计算机辅导软件,职称计算机辅导:WindowsXP辅助工具
- I.Algorithm Choosing Mushrooms
- 趋高机器视觉之机械手臂的应用
- Caffe学习笔记(一):CIFRA-10在Caffe上进行训练学习
- Java NIO笔记05
- python所需各种库(.whl)文件网址,不用下载其它运行库,直接pip install .....whl
- html中添加cnzz,vue中移动端网页 H5网站 添加到 友盟 cnzz的方法