API
- 此处,使用
#include
指令包含 opencv.hpp 头文件,实际上,它包含所有的 OpenCV 头文件。通过包含单个该文件,不再需要包含其他文件
- 所有的 OpenCV 类和函数都在
cv
命名空间中,因此,在源代码中需使用cv::
前缀或using namespace cv
编译语句
| #include <opencv2/opencv.hpp> |
| #include <iostream> |
| |
| using namespace std; |
| using namespace cv; |
读取
- 使用函数
imread()
从文件加载图像,语法如下:
-
第一个参数是图像名称,需要的是文件的绝对路径名
-
第二个参数是一个可选标志,可指定如何表示图像。OpenCV 为这个标志提供了几个选项,最常见的包括:
IMREAD_UNCHANGED
或者 -1
IMREAD_GRAYSCALE
或者 0
IMREAD_COLOR
或者 1
flags 的默认值为 1,它将把图像读取为彩色图像。 当想以特定格式读取图像时,只需指定适当的标志
注意,OpenCV 以 BGR 格式读取彩色图像,而大多数其他计算机视觉库使用 RGB 通道格式顺序。 因此,在将 OpenCV 与其他工具包一起使用时,不要忘记在从一个库切换到另一个库时交换蓝色和红色通道
| Mat img_color = imread("/home/kslas/OpenCV/test.jpg", 1); |
| Mat img_grayscale = imread("/home/kslas/OpenCV/test.jpg", 0); |
| Mat img_unchanged = imread("/home/kslas/OpenCV/test.jpg", -1); |
显示
| imshow(window_name, image) |
- 第一个参数是将要显示在窗口上的窗口名称
- 第二个是要显示的图像
要一次显示多个图像,需要为每个图像指定一个新的窗口名称
| namedWindow("color image", WINDOW_AUTOSIZE); |
| namedWindow("grayscale image", WINDOW_AUTOSIZE); |
| namedWindow("unchanged image", WINDOW_AUTOSIZE); |
| |
| imshow("color image", img_color); |
| imshow("grayscale image", img_grayscale); |
| imshow("unchanged image", img_unchanged); |
| |
| waitKey(0); |
| |
| destroyAllWindows(); |
保存
- 使用函数
imwrite()
将图像写入/保存到文件目录中,语法如下:
- 第一个参数是图像绝对路径名,它必须包含文件扩展名(例如 .png、.jpg 等)。OpenCV 使用这个文件扩展名来指定文件的格式
- 第二个参数是要保存的图像
| imwrite("grayscale.jpg", img_grayscale); |
CMakeLists.txt
| cmake_minimum_required(VERSION 3.10) |
| project(test1) |
| |
| set(CMAKE_CXX_STANDARD 14) |
| set(CMAKE_CXX_STANDARD_REQUIRED TRUE) |
| |
| find_package(OpenCV REQUIRED) |
| |
| include_directories(${OpenCV_INCLUDE_DIRS}) |
| |
| add_executable(test1 main.cpp) |
| |
| target_link_libraries(test1 ${OpenCV_LIBS}) |
完整代码
| |
| #include <opencv2/opencv.hpp> |
| #include <iostream> |
| |
| |
| using namespace std; |
| using namespace cv; |
| |
| int main() |
| { |
| |
| Mat img_color = imread("/home/kslas/OpenCV/test.jpg", 1); |
| Mat img_grayscale = imread("/home/kslas/OpenCV/test.jpg", 0); |
| Mat img_unchanged = imread("/home/kslas/OpenCV/test.jpg", -1); |
| |
| |
| namedWindow("color image", WINDOW_AUTOSIZE); |
| namedWindow("grayscale image", WINDOW_AUTOSIZE); |
| namedWindow("unchanged image", WINDOW_AUTOSIZE); |
| |
| |
| imshow("color image", img_color); |
| imshow("grayscale image", img_grayscale); |
| imshow("unchanged image", img_unchanged); |
| |
| |
| waitKey(0); |
| |
| |
| destroyAllWindows(); |
| |
| |
| imwrite("grayscale.jpg", img_grayscale); |
| |
| return 0; |
| } |
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律