opencv c++ 图像处理
时间: 2024-05-09 19:13:45 浏览: 154
OpenCV是一个开源计算机视觉库,提供了许多用于图像处理的函数和工具。下面是使用OpenCV C++实现图像处理基本操作的步骤:
1. 首先,需要在C++程序中包含OpenCV的头文件:
```c++
#include <opencv2/core/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>
```
2. 读取图像文件并显示图像:
```c++
cv::Mat image = cv::imread("example.jpg"); // 读取图像文件
cv::imshow("Image", image); // 显示图像
cv::waitKey(0); // 等待用户输入任意键继续
```
3. 转换图像的颜色空间:
```c++
cv::Mat gray_image;
cv::cvtColor(image, gray_image, cv::COLOR_BGR2GRAY); // 将图像从BGR色彩空间转换为灰度色彩空间
cv::imshow("Gray Image", gray_image);
cv::waitKey(0);
```
4. 图像的平滑滤波:
```c++
cv::Mat blur_image;
cv::GaussianBlur(image, blur_image, cv::Size(5, 5), 0); // 高斯滤波
cv::imshow("Blur Image", blur_image);
cv::waitKey(0);
```
5. 图像的边缘检测:
```c++
cv::Mat canny_image;
cv::Canny(image, canny_image, 100, 200, 3); // Canny边缘检测
cv::imshow("Canny Image", canny_image);
cv::waitKey(0);
```
6. 识别图像中的轮廓:
```c++
cv::Mat contour_image = image.clone(); // 克隆原始图像,以便在上面绘制轮廓
cv::cvtColor(image, gray_image, cv::COLOR_BGR2GRAY); // 首先将图像从BGR色彩空间转换为灰度色彩空间
cv::threshold(gray_image, gray_image, 100, 255, cv::THRESH_BINARY); // 二值化图像
std::vector<std::vector<cv::Point>> contours; // 存储轮廓点的向量
std::vector<cv::Vec4i> hierarchy; // 存储轮廓层次结构的向量
cv::findContours(gray_image, contours, hierarchy, cv::RETR_TREE, cv::CHAIN_APPROX_SIMPLE); // 查找轮廓
for (int i = 0; i < contours.size(); i++) // 遍历所有轮廓并绘制
{
cv::Scalar color = cv::Scalar(0, 0, 255); // 定义轮廓颜色(红色)
cv::drawContours(contour_image, contours, i, color, 2, cv::LINE_8, hierarchy, 0); // 在图像上绘制每个轮廓
}
cv::imshow("Contour Image", contour_image);
cv::waitKey(0);
```
引用: opencv(c++)实现图像处理基本操作。常见头文件 #include<opencv2/core/core.hpp> #include<opencv2/imgcodecs.hpp> #include<opencv2/highgui.hpp> #include<opencv2/imgproc.hpp> #include<iostream> [^1]。引用:Opencv c++(图像处理)。openCV 中 cv::Rect 矩形类用法_sinat_38102206的博客-CSDN博客_cv rect [^2]。
阅读全文