使用OpenCV实现图像处理:旋转、灰度与缩放
需积分: 14 167 浏览量
更新于2024-09-07
收藏 2KB TXT 举报
"这是一个使用OpenCV库在C++环境下实现的简单图像处理程序,包括图片旋转、灰度化、修改指定位置的RGB值、保存图像、放大和缩小图像等功能。这个程序是为一个智能识别实验课程编写的,并且可以在Visual Studio 2017 (VS2017)中成功运行。使用的OpenCV版本为4.1。"
在这个程序中,我们可以看到几个关键的OpenCV函数和概念,它们是图像处理的核心部分:
1. **头文件**:`#include<opencv2/opencv.hpp>`、`#include<opencv2/highgui/highgui.hpp>`、`#include<opencv2/imgproc/types_c.h>`、`#include<opencv2/core/core.hpp>`和`#include<opencv2/imgproc/imgproc.hpp>`。这些头文件包含了OpenCV库中关于图像处理、核心功能和高GUI(图形用户界面)的必要定义。
2. **命名空间**:`using namespace cv;` 和 `using namespace std;` 这两行语句使得我们无需在代码中反复写出`cv::`或`std::`前缀,简化了代码。
3. **图像旋转**:`rotate_arbitrarily_angle`函数展示了如何旋转图像。它首先计算了旋转所需的边界大小,然后使用`copyMakeBorder`函数添加了边缘以确保旋转后的图像不会被剪切。接着,通过`getRotationMatrix2D`创建了旋转矩阵,最后使用`warpAffine`函数进行实际的旋转操作。注意,为了防止图像尺寸变化,可能需要调整图像的大小和位置。
4. **图像灰度化**:虽然这个示例没有直接包含灰度化功能,但OpenCV提供了`cvtColor`函数,可以通过参数设置将其应用于图像,将彩色图像转换为灰度图像,例如:`cvtColor(src, dst, COLOR_BGR2GRAY)`。
5. **修改RGB值**:可以使用`at`运算符来访问图像中的像素并修改其RGB值,例如:`src.at<Vec3b>(y, x)[0] = newB;` 会修改指定位置`y, x`的蓝色分量。
6. **保存图像**:`imwrite`函数用于保存处理后的图像,例如:`imwrite("output.jpg", dst);` 将图像`dst`保存为JPEG格式的文件。
7. **放大和缩小图像**:虽然代码中没有直接的缩放功能,但可以使用`resize`函数来实现,如:`resize(src, dst, Size(), scale_factor, scale_factor);`,其中`scale_factor`是缩放比例。
8. **高GUI**:虽然没有在给出的代码段中显示,但OpenCV的`imshow`函数可以用来在窗口中显示图像,如:`imshow("WindowName", img);`,而`waitKey`则可以等待用户按键,例如:`waitKey(0)`会让程序暂停,直到用户按下任意键。
这个程序是一个基础的图像处理示例,适合初学者理解OpenCV的基本操作。通过学习和扩展这个代码,可以实现更复杂的图像处理任务,比如边缘检测、特征匹配、物体识别等。
2012-07-23 上传
2024-01-03 上传
2023-10-22 上传
2021-03-06 上传
2013-01-06 上传
2020-03-20 上传
2024-07-17 上传
justlike北野
- 粉丝: 1
- 资源: 4
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析