Rumah > pembangunan bahagian belakang > Tutorial Python > contoh ujian teknikal vison komputer - Python / c++

contoh ujian teknikal vison komputer - Python / c++

王林
Lepaskan: 2024-09-10 06:47:32
asal
855 orang telah melayarinya

Untuk memasang opencv dalam python

pip install opencv-python
Salin selepas log masuk

Untuk memasang opencv dalam c++

git clone https://github.com/opencv/opencv.git
mkdir -p build && cd build
cmake ../opencv
make -j4
sudo make install
Salin selepas log masuk

CmakeLists.txt

cmake_minimum_required(VERSION 3.0)
project(opencv_c__)

find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
set(CMAKE_CXX_STANDARD 17)

add_executable(opencv_c__ main.cpp)
target_link_libraries(opencv_c__ ${OpenCV_LIBS})
Salin selepas log masuk

I - Pengesanan pergerakan

xample of computer vison technical test - Python / c++

def ex1():
    cap = cv2.VideoCapture(0)

    object_detector = cv2.createBackgroundSubtractorMOG2()

    while True:
        ret, frame = cap.read()
        mask = object_detector.apply(frame)
        cv2.imshow('Video', mask)
        if cv2.waitKey(30) & 0xFF == 27:
            break

    cap.release()
    cv2.destroyAllWindows()
Salin selepas log masuk
#include <iostream>

#include <opencv2/opencv.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/video.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>

int main() {
    cv::VideoCapture cap(0);
    cv::Ptr<cv::BackgroundSubtractor> object_detector = cv::createBackgroundSubtractorMOG2();

    while (true) {
        cv::Mat frame;
        cap >> frame;
        cv::Mat mask;
        object_detector->apply(frame, mask);
        cv::imshow("Video", mask);
        if (cv::waitKey(30) == 27) {
            break;
        }
    }

    cap.release();
    cv::destroyAllWindows();
    return 0;
}
Salin selepas log masuk

II - Muka kabur

def ex2():
    cap = cv2.VideoCapture(0)

    while True:
        ret, frame = cap.read()
        face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        faces = face_cascade.detectMultiScale(gray, 1.1, 4)
        for (x, y, w, h) in faces:
            roi = frame[y:y + h, x:x + w]
            roi = cv2.GaussianBlur(roi, (23, 23), 30)
            frame[y:y + h, x:x + w] = roi

        cv2.imshow("gray", gray)
        if cv2.waitKey(30) & 0xFF == 27:
            break

    cap.release()
    cv2.destroyAllWindows()
Salin selepas log masuk
#include <iostream>

#include <opencv2/opencv.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/video.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>


int main() {
    cv::VideoCapture cap(0);

    while(true) {
        cv::Mat frame;
        cap >> frame;

        cv::CascadeClassifier face_cascade;
        face_cascade.load("haarcascade_frontalface_default.xml");

        std::vector<cv::Rect> faces;
        face_cascade.detectMultiScale(frame, faces, 1.1, 3, 0, cv::Size(30, 30));

        for(int i = 0; i < faces.size(); i++) {
            cv::Rect face = faces[i];
            cv::Mat faceROI = frame(face);
            cv::blur(faceROI, faceROI, cv::Size(30, 30));
        }

        cv::imshow("frame", frame);

        if(cv::waitKey(1) == 27) {
            break;
        }
    }

}
Salin selepas log masuk

III - Mengesan pergerakan

xample of computer vison technical test - Python / c++

def ex3():
    cap = cv2.VideoCapture(0)
    object_detector = cv2.createBackgroundSubtractorMOG2()

    last_coordinates = []

    while True:
        ret, frame = cap.read()
        mask = object_detector.apply(frame)
        contours, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
        for contour in contours:
            if cv2.contourArea(contour) < 5000:
                continue
            (x, y, w, h) = cv2.boundingRect(contour)
            last_coordinates.append((x, y, w, h))
        for i in range(1, len(last_coordinates)):
            cv2.line(frame, (last_coordinates[i - 1][0], last_coordinates[i - 1][1]),
                     (last_coordinates[i][0], last_coordinates[i][1]), (0, 0, 255), 5)
        cv2.imshow('Video', frame)
        if cv2.waitKey(30) & 0xFF == 27:
            break

    cap.release()
    cv2.destroyAllWindows()
Salin selepas log masuk
#include <iostream>

#include <opencv2/opencv.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/video.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>


int main() {
    cv::VideoCapture cap(0);
    cv::Ptr<cv::BackgroundSubtractor> object_detector = cv::createBackgroundSubtractorMOG2();

    std::vector<cv::Rect> last_coordinates;

    while (true) {
        cv::Mat frame;
        cap >> frame;
        cv::Mat mask;
        object_detector->apply(frame, mask);
        std::vector<std::vector<cv::Point>> contours;
        std::vector<cv::Vec4i> hierarchy;
        cv::findContours(mask, contours, hierarchy, cv::RETR_TREE, cv::CHAIN_APPROX_SIMPLE);
        for (auto &contour : contours) {
            if (cv::contourArea(contour) < 5000) {
                continue;
            }
            cv::Rect rect = cv::boundingRect(contour);
            last_coordinates.push_back(rect);
        }
        for (int i = 1; i < last_coordinates.size(); i++) {
            cv::line(frame, cv::Point(last_coordinates[i - 1].x, last_coordinates[i - 1].y),
                     cv::Point(last_coordinates[i].x, last_coordinates[i].y), cv::Scalar(0, 0, 255), 5);
        }
        cv::imshow("Video", frame);
        if (cv::waitKey(30) & 0xFF == 27) {
            break;
        }
    }

    cap.release();
    cv::destroyAllWindows();
    return 0;
}
Salin selepas log masuk

Atas ialah kandungan terperinci contoh ujian teknikal vison komputer - Python / c++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan