3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
fanfuhan OpenCV 教學082 ~ opencv-082-角點檢測(shi-tomas角點檢測/標記/定位/尋找) 資料來源: https://fanfuhan.github.io/ https://fanfuhan.github.io/2019/04/26/opencv-082/ GITHUB:https://github.com/jash-git/fanfuhan_ML_OpenCV Harris角點檢測是一種計算速度很慢的角點檢測算法,很難實時計算,所有最常用的是shi-tomas角點檢測算法,它的運行速度很快。 C++ #include #include using namespace std; using namespace cv; void process_frame(Mat &image); RNG rng(12345); /* * 角点检测(shi-tomas角点检测) */ int main() { VideoCapture capture("../images/color_object.mp4"); if (!capture.isOpened()) { cout << "could not open video..." << endl; return -1; } Mat frame; while (true) { bool ret = capture.read(frame); imshow("input", frame); if (!ret) break; process_frame(frame); imshow("result", frame); char c = waitKey(5); if (c == 27) { break; } } waitKey(0); return 0; } void process_frame(Mat &image) { // Detector parameters int maxCorners = 100; double quality_level = 0.01; double minDistance = 0.04; // detecting corners Mat gray, dst; cvtColor(image, gray, COLOR_BGR2GRAY); vector corners; goodFeaturesToTrack(gray, corners, maxCorners, quality_level, minDistance, Mat(), 3, false); // drawing corner for (int i = 0; i < corners.size(); ++i) { int b = rng.uniform(0, 255); int g = rng.uniform(0, 255); int r = rng.uniform(0, 255); circle(image, corners[i], 5, Scalar(b, g, r), 3); } } Python import numpy as np import cv2 as cv def process(image, opt=1): # Detecting corners gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) corners = cv.goodFeaturesToTrack(gray, 100, 0.05, 10) print(len(corners)) for pt in corners: print(pt) b = np.random.random_integers(0, 256) g = np.random.random_integers(0, 256) r = np.random.random_integers(0, 256) x = np.int32(pt[0][0]) y = np.int32(pt[0][1]) cv.circle(image, (x, y), 5, (int(b), int(g), int(r)), 2) # output return image src = cv.imread("D:/images/ele_panel.png") cv.imshow("input", src) result = process(src) cv.imshow('result', result) cv.waitKey(0) cv.destroyAllWindows() """ cap = cv.VideoCapture(0) while True: ret, frame = cap.read() cv.imwrite("D:/input.png", frame) cv.imshow('input', frame) result = process(frame) cv.imshow('result', result) k = cv.waitKey(5)&0xff if k == 27: break cap.release() cv.destroyAllWindows() """

本文由jashliaoeuwordpress提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦