본문 바로가기

OpenCV

ch14 keypoints

#python

import cv2

def detect_keypoints():
    src = cv2.imread("D:\\projects\\SampleCode\\006939-master\\ch14\\keypoints\\box_in_scene.png", cv2.IMREAD_GRAYSCALE)

    if src is None:
        print("Image load failed!")
        return

    orb = cv2.ORB_create()

    keypoints = orb.detect(src, None)
    keypoints, desc = orb.compute(src, keypoints)

    print("keypoints.size():", len(keypoints))
    print("desc.size():", desc.shape)

    dst = cv2.drawKeypoints(src, keypoints, None, color=(0, 255, 0), flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)

    cv2.imshow("src", src)
    cv2.imshow("dst", dst)

    cv2.waitKey()
    cv2.destroyAllWindows()

detect_keypoints()

// C++

#include "opencv2/opencv.hpp"
#include <iostream>

using namespace cv;
using namespace std;

void detect_keypoints();

int main(void)
{
	detect_keypoints();

	return 0;
}

void detect_keypoints()
{
	Mat src = imread("box_in_scene.png", IMREAD_GRAYSCALE);

	if (src.empty()) {
		cerr << "Image load failed!" << endl;
		return;
	}

	Ptr<Feature2D> feature = ORB::create();

	vector<KeyPoint> keypoints;
	feature->detect(src, keypoints);

	Mat desc;
	feature->compute(src, keypoints, desc);

	cout << "keypoints.size(): " << keypoints.size() << endl;
	cout << "desc.size(): " << desc.size() << endl;

	Mat dst;
	drawKeypoints(src, keypoints, dst, Scalar::all(-1), DrawMatchesFlags::DRAW_RICH_KEYPOINTS);

	imshow("src", src);
	imshow("dst", dst);

	waitKey();
	destroyAllWindows();
}

C++ Code 출처 : OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝 - 황선규 저


'OpenCV' 카테고리의 다른 글

ch14 stitching  (0) 2024.05.22
ch14 matching  (0) 2024.05.22
ch14 corners  (0) 2024.05.22
ch13 template  (0) 2024.05.21
ch13 QRCode  (0) 2024.05.21