【树莓派学习笔记】五、处理、自动重命名并另存为图片

目录

  • 编写源码
  • 编译
  • 测试

平台:树莓派3B
版本: 2021-05-07-raspios-buster-armhf


编写源码

所用源码修改自【机器视觉学习笔记】最近邻插值实现图片任意角度旋转(C++)
在合适的地方编写源码

nano main.cpp
#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;Mat RotateImage(Mat src, float angle)
{int x0, y0, x1, y1;angle = angle * 3.1415926535897932384626433832795 / 180;float sin_sita = sin(angle), cos_sita = cos(angle);Mat dst(abs((int)src.cols*sin_sita) + abs((int)src.rows*cos_sita), abs((int)src.cols*cos_sita) + abs((int)src.rows*sin_sita), CV_8UC3, Scalar(0));  //创建新图像for (x1 = 0; x1 < dst.cols; ++x1){for (y1 = 0; y1 < dst.rows; ++y1){float fx1, fy1;//将图片中点设为坐标原点fx1 = x1 - dst.cols / 2;fy1 = y1 - dst.rows / 2;//旧点直角坐标(坐标原点在角上)x0 = fx1*cos_sita - fy1*sin_sita + src.cols / 2 + 0.5;y0 = fx1*sin_sita + fy1*cos_sita + src.rows / 2 + 0.5;if (x0 >= 0 && x0 < src.cols && y0 >= 0 && y0 < src.rows){dst.at<Vec3b>(Point(x1, y1)) = src.at<Vec3b>(Point(x0, y0));}elsedst.at<Vec3b>(Point(x1, y1)) = 0;}}return dst;
}int main(int argc, char * argv[])
{Mat src;Mat Output;String Name = argv[1];src = imread(argv[1]);Output = RotateImage(src, (float)stoi(argv[2]));imshow("原图", src);imshow("输出", Output);imwrite(Name.substr(0, Name.find('.')) + "_Output." + Name.substr(Name.find('.') + 1, Name.length() - Name.find('.') - 1), Output);waitKey(0);return 0;
}

在这里插入图片描述

编译

相同的目录下编写CMakeLists.txt文件

nano CMakeLists.txt
project(main)
set(OpenCV_DIR "/usr/local/include/opencv4")
find_package( OpenCV REQUIRED )
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(main main.cpp)
target_link_libraries(main ${OpenCV_LIBS})

在这里插入图片描述

其中/usr/local/include/opencv4为安装opencv后库的路径
不同的版本可能不同
在这里插入图片描述
配置编译环境并编译

cmake . 
make

在这里插入图片描述
在这里插入图片描述

测试

./main 4.jpg 45

在这里插入图片描述
如图可见输出图片已成功自动重命名另存为4_Output.jpg
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400618.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第10章:Canny图像边缘检测

第10章&#xff1a;Canny图像边缘检测一、Canny边缘检测的基础&#xff1a;1. 应用高斯滤波去除图像噪声&#xff1a;2. 计算梯度3.非极大值抑制4. 应用双阈值确定边缘&#xff1a;二、Canny函数使用&#xff1a;​ Canny边缘检测是一种使用多级边缘检测算法检测边缘的方法。19…

【树莓派学习笔记】六、启用摄像头、实时视频、录像和截图

目录安装摄像头配置使用luvcview平台&#xff1a;树莓派3B 版本&#xff1a; 2021-05-07-raspios-buster-armhf 安装摄像头 配置 sudo raspi-config重启后 cd /dev ls可看到新增了video0设备 使用luvcview 安装 sudo apt-get install luvcview查看摄像设备详细信息 luv…

Android各种屏幕分辨率(VGA、HVGA、QVGA、WQVGA、WVGA、FWVGA) 详解

2019独角兽企业重金招聘Python工程师标准>>> VGA&#xff1a;Video Graphics Array&#xff0c;即&#xff1a;显示绘图矩阵&#xff0c;相当于640480 像素&#xff1b;HVGA&#xff1a;Half-size VGA&#xff0c;即&#xff1a;VGA的一半&#xff0c;分辨率为48032…

敏捷合同-摘自网络

敏捷软件开发实践的文化中存在着一个断层&#xff0c;该断层同样体现在许多敏捷团队中。这个断层就是业务分析人员在敏捷项目中的角色——谁来担任这个角色&#xff1f;它的作用 和价值是什么&#xff1f;它又是如何发生改变的&#xff1f;这种情况的潜台词&#xff08;其实我曾…

第11章:图像金字塔

第11章&#xff1a;图像金字塔一、理论基础&#xff1a;1. 向下采样&#xff1a;2. 向上采样&#xff1a;二、pyrDown函数使用&#xff1a;三、pyrUp函数及使用&#xff1a;四、采样可逆性研究五、拉普拉斯金字塔1. 定义&#xff1a;2. 应用&#xff1a;什么是图像金子塔&#…

【树莓派学习笔记】七、(免费)内网穿透将树莓派作为服务器管理网站

目录nginx安装开机自启动测试查看nginx安装路径查看配置文件路径(测试用)修改index.nginx-debian.html内网穿透免费方案ngrok原版方案下载ngrok连接账户开启内网穿透httpSSH网云穿方案开通隧道下载开启内网穿透开机自启动花生壳方案下载和安装添加内网穿透映射测试平台&#xf…

第12章:图像轮廓

第12章&#xff1a;图像轮廓一、查找并绘制轮廓&#xff1a;1. 查找图像轮廓&#xff1a;2. 绘制图像轮廓&#xff1a;3. 绘制轮廓实例&#xff1a;二、矩特征1. 矩的计算&#xff1a;moments函数2. 计算轮廓面积&#xff1a;contourArea函数3. 计算轮廓长度&#xff1a;arcLen…

【树莓派学习笔记】八、两步安装VS Code (Visual Studio Code)

目录下载安装使用(可选)安装插件C/CCMake ToolsCode Runner平台&#xff1a;树莓派3B 版本&#xff1a; 2021-05-07-raspios-buster-armhf 下载 官网下载 Download Visual Studio Code 发送到树莓派 安装 sudo dpkg -i Desktop/code_1.60.2-1632316275_armhf.deb 使用 在…

20 best jquery 截图

digguka, January 05, 2012jQuery Image Crop - A very useful list of tools for cropping, zooming and resizing of images. Some of plugins come with the ability to upload croped images. 转载于:https://www.cnblogs.com/yqskj/archive/2013/05/25/3098411.html

【RK3399Pro学习笔记】一、Thinker Edge R 安装系统和VNC服务

目录下载固件安装USB驱动下载烧录工具刷机第一次开机连接WifiSSH登录换源设置语言安装VNC服务平台&#xff1a;华硕 Thinker Edge R 瑞芯微 RK3399Pro 固件版本&#xff1a;Tinker_Edge_R-Debian-Stretch-V1.0.4-20200615 风火轮论坛资料网盘 提取码&#xff1a;wqbd 下载固件…

第13章:直方图处理

第13章&#xff1a;直方图处理一、直方图的含义&#xff1a;1. 普通直方图&#xff1a;2. 归一化直方图&#xff1a;二、绘制直方图&#xff1a;1. 使用Numpy绘制直方图&#xff1a;2. 使用OpenCV绘制直方图&#xff1a;3. 使用掩码绘制直方图&#xff1a;三、直方图均衡化&…

操作系统 内存管理篇

一.程序的装入和链接 装入方式&#xff1a; 链接方式&#xff1a; 二.进程的内存映像 三.内存的分配 1.连续分配 分配方式&#xff1a; 2.不连续分配 分页&#xff1a;页面大小一致 引入快表&#xff08;和 cache 处理思路一致&#xff09; 升级到二级页表 分段&#xff1a;…

【RK3399Pro学习笔记】二、Thinker Edge R 内网穿透以实现远程SSH

目录免费方案花生壳下载安装添加内网穿透映射测试平台&#xff1a;华硕 Thinker Edge R 瑞芯微 RK3399Pro 固件版本&#xff1a;Tinker_Edge_R-Debian-Stretch-V1.0.4-20200615 因Thinker Edge R安装的镜像为64位的版本 getconf LONG_BIT免费方案 花生壳 下载 在花生壳下载…

第14章:傅里叶变换

第14章&#xff1a;傅里叶变换一、理论基础&#xff1a;二、Numpy实现傅里叶变换&#xff1a;1. 实现傅里叶变换&#xff1a;2. 逆傅里叶变换&#xff1a;3. 高通滤波示例&#xff1a;三、OpenCV实现傅里叶变换&#xff1a;1. 实现傅里叶变换&#xff1a;2. 实现逆傅里叶变换&a…

代码能不能不要写得这么烂?!

我是一个研二的即将实习和毕业的普通屌丝研究生&#xff0c;带着几个研一的同学一起做数据挖掘项目。为了在毕业的时候防止青黄不接导致老师不让我毕业&#xff0c;于是从他们刚进实验室起&#xff0c;就“开始了设计模式和代码风格的培养”。具体的做法&#xff0c;就是扔给他…

【Kali 树莓派版学习笔记】安装系统和VNC服务

目录下载固件和烧录系统第一次开机SSH连接换源设置语言安装VNC平台&#xff1a;树莓派3B 版本&#xff1a; Linux kali 5.4.83-Re4son-v7 #1 SMP Sat May 15 03:22:58 UTC 2021 armv7l GNU/Linux 下载固件和烧录系统 Get Kali 格式化TF卡 使用Win32DiskImager刷入镜像 第…

第15章:模板匹配

第15章&#xff1a;模板匹配一、模板匹配基础&#xff1a;1. cv2.matchTemplate()函数&#xff1a;2. 匹配原理&#xff1a;3. 查找最值&#xff1a;二、多模版匹配&#xff1a;1. 获取匹配位置集合&#xff1a;2. 循环&#xff1a;3.调整坐标4.标记匹配图像的位置​ 模板匹配是…

第16章:霍夫变换

第16章&#xff1a;霍夫变换一、霍夫直线变换&#xff1a;1. 霍夫直线变换原理&#xff1a;2. HoughLines函数&#xff1a;3. HoughLinesP函数&#xff1a;2. 霍夫圆环变换&#xff1a;霍夫变换是一种在图像中寻找直线、圆形以及其他简单形状的方法。霍夫变换采用类似于投票的方…

一个java处理JSON格式数据的通用类(三)

/** *//** * 从json数组中解析出java Integer型对象数组 * param jsonString * return */ public static Double[] getDoubleArray4Json(String jsonString)...{ JSONArray jsonArray JSONArray.fromObject(jsonString); Doubl…

【树莓派学习笔记】九、C语言寄存器操作控制GPIO

目录CPU型号确定寄存器的地址问题GPIO寄存器GPFESLnGPSETnGPCLRn重要函数mmap函数munmap函数点灯程序平台&#xff1a;树莓派3B 版本&#xff1a; 2021-05-07-raspios-buster-armhf CPU型号确定 由 pinout命令可知&#xff0c;所用的板子Soc型号为BCM2837 寄存器的地址问题…