OpenCV安装和配置、读取、显示、保存、创建、绘制
目录
1. 安装和配置OpenCV
在使用OpenCV之前,需要先安装OpenCV库,并在开发环境中进行配置。假设你已经安装了CMake和OpenCV库,下面是配置步骤:
步骤一:安装OpenCV库
// bash
sudo apt-get update
sudo apt-get install -y build-essential cmake pkg-config libopencv-dev
步骤二:创建项目并配置CMakeLists.txt
// cmake
cmake_minimum_required(VERSION 3.10)
project(OpenCV_Project)
find_package(OpenCV REQUIRED)
add_executable(main main.cpp)
target_link_libraries(main PRIVATE ${OpenCV_LIBS})
步骤三:编译项目
// bash
mkdir build
cd build
cmake ..
Make
2. 读取图像
使用cv::imread函数来读取图像文件。
// cpp
// 读取图像
cv::Mat image = cv::imread("test.jpg", cv::IMREAD_COLOR);
参数解释:
• “test.jpg”: 图像的路径和文件名。
• cv::IMREAD_COLOR: 读取彩色图像。如果需要以灰度图像读取,可以使用cv::IMREAD_GRAYSCALE。
注意: 确保路径正确,否则返回的image会是空的。
3. 显示图像
使用cv::imshow函数来显示图像。
// cpp
// 显示图像
cv::imshow("Display Window", image);
注意: 显示的窗口名会影响后续操作,确保窗口名与期望一致。
4. 保存图像
使用cv::imwrite函数来保存图像。
// cpp
// 保存图像
cv::imwrite("output.jpg", image);
参数解释:
• “output.jpg”: 输出文件名和路径。
• image: 要保存的图像数据。
注意: 确保输出路径和文件名正确,否则可能无法保存文件。
5. 创建空白画布
使用cv::Mat构造函数创建空白图像。
// cpp
// 创建空白图像
cv::Mat blank(500, 500, CV_8UC3, cv::Scalar(0,0,0));
参数解释:
• 500: 图像高度。
• 500: 图像宽度。
• CV_8UC3: 数据类型为8位无符号整数,3个通道(BGR)。
• cv::Scalar(0,0,0): 初始值为黑色。
6. 在画布上绘制红色直线
使用cv::line函数在图像上绘制直线。
// cpp
// 绘制红色直线
cv::line(blank, cv::Point(0,0), cv::Point(500,500), cv::Scalar(0,0,255), 5, cv::LINE_AA);
参数解释:
• blank: 目标图像。
• cv::Point(0,0): 起始点(左上角)。
• cv::Point(500,500): 终点(右下角)。
• cv::Scalar(0,0,255): 红色(BGR格式)。
• 5: 线宽,以像素为单位。
• cv::LINE_AA: 使用抗锯齿(平滑)算法。
7. 关闭窗口
使用cv::waitKey和cv::destroyAllWindows函数来管理窗口生命周期。
// cpp
// 等待用户按键
cv::waitKey(0);
cv::destroyAllWindows();
参数解释:
• 0: 无穷等待,直到用户按键。
• cv::destroyAllWindows(): 关闭所有窗口。
8. 完整代码
// cpp
#include <opencv2/opencv.hpp>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
int main() {
// 读取图像
cv::Mat image = cv::imread("test.jpg", cv::IMREAD_COLOR);
// 检查图像是否读取成功
if (image.empty()) {
std::cout << "无法读取图像文件" << std::endl;
return -1;
}
// 创建空白图像
cv::Mat blank(500, 500, CV_8UC3, cv::Scalar(0,0,0));
// 绘制红色直线
cv::line(blank, cv::Point(0,0), cv::Point(500,500), cv::Scalar(0,0,255), 5, cv::LINE_AA);
// 显示图像
cv::imshow("Original Image", image);
cv::imshow("Blank Image", blank);
// 保存图像
cv::imwrite("output.jpg", image);
cv::imwrite("blank_output.jpg", blank);
// 等待用户按键
cv::waitKey(0);
cv::destroyAllWindows();
return 0;
}
9. 总结
通过上述步骤,我们学习了如何在C++中配置OpenCV,读取和显示图像,创建和绘制空白图像,以及保存图像的基本操作。这些是OpenCV编程的基础,熟练掌握后可以进行更复杂的图像处理任务。