OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,广泛应用于各种图像和视频处理任务中。OpenCV 3.0作为其历史上一个重要的版本,引入了许多新的特性和改进。为了更好地掌握OpenCV 3.0,我们需要熟悉其核心头文件,这些头文件是进行图像处理的关键。以下是OpenCV 3.0中一些必备头文件的详解。
1.
opencv2/core/core.hpp
core.hpp
是OpenCV中最基础的头文件,它定义了OpenCV的基础数据结构和算法。以下是其中一些重要的类和函数:
cv::Mat
:表示图像和视频的基本数据结构,可以存储多维数组。
cv::Scalar
:表示颜色值或点坐标。
cv::Point
:表示二维点。
cv::Point2f
:表示浮点型二维点。
cv::Size
:表示图像或窗口的大小。
#include
int main() {
cv::Mat img = cv::Mat::zeros(200, 200, CV_8UC3); // 创建一个200×200的黑色图像
cv::Point center(100, 100);
cv::circle(img, center, 50, cv::Scalar(0, 255, 0), -1); // 在图像中心画一个黄色圆
return 0;
}
2.
opencv2/imgproc/imgproc.hpp
imgproc.hpp
头文件包含了图像处理的相关算法,如滤波、形态学操作、边缘检测等。
cv::GaussianBlur
:高斯模糊。
cv::Canny
:Canny边缘检测。
cv::erode
和
cv::dilate
:形态学操作。
#include
int main() {
cv::Mat src = cv::imread(“image.jpg”);
cv::Mat dst;
cv::GaussianBlur(src, dst, cv::Size(5, 5), 1.5);
cv::Canny(dst, dst, 50, 150);
return 0;
}
3.
opencv2/highgui/highgui.hpp
highgui.hpp
头文件提供了用于图像和视频显示、用户交互、文件读取/写入等功能的函数。
cv::imshow
:显示图像。
cv::waitKey
:等待键盘输入。
cv::imread
和
cv::imwrite
:读取和写入图像文件。
#include
int main() {
cv::Mat img = cv::imread(“image.jpg”);
cv::imshow(“Image”, img);
cv::waitKey(0);
cv::imwrite(“output.jpg”, img);
return 0;
}
4.
opencv2/videoio/videoio.hpp
videoio.hpp
头文件提供了视频捕获和播放的相关功能。
cv::VideoCapture
:用于视频捕获。
cv::VideoWriter
:用于视频写入。
#include
int main() {
cv::VideoCapture cap(“video.mp4”);
cv::VideoWriter writer(“output.avi”, cv::VideoWriter::fourcc(‘M’, ‘J’, ‘P’, ‘G’), 30, cv::Size(640, 480));
cv::Mat frame;
while (cap.read(frame)) {
writer.write(frame);
}
return 0;
}
通过以上对OpenCV 3.0必备头文件的详解,我们可以更好地理解和利用OpenCV进行图像处理。掌握这些头文件,将为解锁图像处理新技能奠定坚实的基础。