您好,登錄后才能下訂單哦!
OpenCV(開源計算機視覺庫)是一個用于處理實時圖像和視頻的開源庫。它包含了許多用于圖像處理、特征提取和對象檢測的函數。結合C++,我們可以使用這些功能來處理復雜場景。
以下是一些使用OpenCV和C++處理復雜場景的示例:
#include <opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main() {
Mat image = imread("input.jpg");
if (image.empty()) {
cout << "無法打開或找到圖像"<< endl;
return -1;
}
// 轉換為灰度圖像
Mat gray_image;
cvtColor(image, gray_image, COLOR_BGR2GRAY);
// 應用高斯模糊
Mat blurred_image;
GaussianBlur(gray_image, blurred_image, Size(5, 5), 0);
// 應用Canny邊緣檢測
Mat edges;
Canny(blurred_image, edges, 100, 200);
// 顯示結果
imshow("Edges", edges);
waitKey(0);
return 0;
}
#include <opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main() {
// 加載人臉檢測級聯分類器
CascadeClassifier face_cascade;
face_cascade.load("haarcascade_frontalface_default.xml");
Mat image = imread("input.jpg");
if (image.empty()) {
cout << "無法打開或找到圖像"<< endl;
return -1;
}
// 轉換為灰度圖像
Mat gray_image;
cvtColor(image, gray_image, COLOR_BGR2GRAY);
// 檢測人臉
vector<Rect> faces;
face_cascade.detectMultiScale(gray_image, faces, 1.1, 3, 0, Size(30, 30));
// 在圖像上繪制人臉矩形框
for (const auto &face : faces) {
rectangle(image, face, Scalar(255, 0, 0), 2);
}
// 顯示結果
imshow("Faces", image);
waitKey(0);
return 0;
}
#include <opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main() {
VideoCapture cap(0); // 打開攝像頭
if (!cap.isOpened()) {
cout << "無法打開攝像頭"<< endl;
return -1;
}
Mat frame;
while (true) {
cap >> frame; // 讀取視頻幀
if (frame.empty()) {
break;
}
// 轉換為灰度圖像
Mat gray_frame;
cvtColor(frame, gray_frame, COLOR_BGR2GRAY);
// 顯示結果
imshow("Gray Frame", gray_frame);
// 按 'q' 鍵退出
if (waitKey(30) == 'q') {
break;
}
}
return 0;
}
這些示例展示了如何使用OpenCV和C++處理復雜場景。你可以根據需要修改這些代碼,以適應不同的應用場景。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。