以下是一些基本图像处理程序
1.加载和显示图像:创建一个程序,能够加载图像文件并将其显示在窗口中。
#include <iostream>
#include <opencv2/opencv.hpp>
//#pragma comment(lib,"opencv_world480d.lib")
int main() {
// 加载图像
cv::Mat image = cv::imread("your_image.jpg");
if (image.empty()) {
std::cerr << "Error: Could not read image file." << std::endl;
return -1;
}
// 显示图像
cv::imshow("My Image", image);
cv::waitKey(0);
cv::destroyAllWindows();
return 0;
}
2.调整图像大小:编写代码,可以加载图像并调整其大小。
#include <iostream>
#include <opencv2/opencv.hpp>
//#pragma comment(lib,"opencv_world480d.lib")
int main() {
// 加载图像
cv::Mat image = cv::imread("your_image.jpg");
if (image.empty()) {
std::cerr << "Error: Could not read image file." << std::endl;
return -1;
}
// 调整图像大小
cv::Size newSize(800, 600);
cv::Mat resizedImage;
cv::resize(image, resizedImage, newSize);
// 显示调整后的图像
cv::imshow("Resized Image", resizedImage);
cv::waitKey(0);
cv::destroyAllWindows();
return 0;
}
3.应用滤波器:学习如何应用常见的图像滤波器,例如高斯滤波器。
#include <iostream>
#include <opencv2/opencv.hpp>
//#pragma comment(lib,"opencv_world480d.lib")
int main() {
// 加载图像
cv::Mat image = cv::imread("your_image.jpg");
if (image.empty()) {
std::cerr << "Error: Could not read image file." << std::endl;
return -1;
}
// 应用高斯滤波
cv::Mat blurredImage;
cv::GaussianBlur(image, blurredImage, cv::Size(5, 5), 0);
// 显示模糊图像
cv::imshow("Blurred Image", blurredImage);
cv::waitKey(0);
cv::destroyAllWindows();
return 0;
}
4.检测边缘:创建一个程序,用于检测图像中的边缘。
#include <iostream>
#include <opencv2/opencv.hpp>
//#pragma comment(lib,"opencv_world480d.lib")
int main() {
// 加载图像
cv::Mat image = cv::imread("your_image.jpg");
if (image.empty()) {
std::cerr << "Error: Could not read image file." << std::endl;
return -1;
}
// 检测边缘
cv::Mat edges;
cv::Canny(image, edges, 100, 200);
// 显示边缘图像
cv::imshow("Edge Image", edges);
cv::waitKey(0);
cv::destroyAllWindows();
return 0;
}
5.图像转换:练习图像颜色空间的转换,如将彩色图像转换为灰度图像,并将图像从RGB颜色空间转换为HSV颜色空间。
#include <iostream>
#include <opencv2/opencv.hpp>
//#pragma comment(lib,"opencv_world480d.lib")
int main() {
// 加载图像
cv::Mat image = cv::imread("your_image.jpg");
if (image.empty()) {
std::cerr << "Error: Could not read image file." << std::endl;
return -1;
}
// 转换为灰度图像
cv::Mat grayImage;
cv::cvtColor(image, grayImage, cv::COLOR_BGR2GRAY);
// 显示灰度图像
cv::imshow("Gray Image", grayImage);
cv::waitKey(0);
cv::destroyAllWindows();
// 转换为HSV颜色空间
cv::Mat hsvImage;
cv::cvtColor(image, hsvImage, cv::COLOR_BGR2HSV);
// 分离通道
std::vector<cv::Mat> channels;
cv::split(hsvImage, channels);
// 显示H、S、V通道
cv::imshow("Hue Channel", channels[0]); // H通道
cv::imshow("Saturation Channel", channels[1]); // S通道
cv::imshow("Value Channel", channels[2]); // V通道
cv::waitKey(0);
cv::destroyAllWindows();
return 0;
}
6.要深入理解OpenCV,官网也提供了丰富的示例代码,如下。