OpenCV与图像处理学习十三——Harris角点检测(含代码)
生活随笔
收集整理的這篇文章主要介紹了
OpenCV与图像处理学习十三——Harris角点检测(含代码)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
OpenCV與圖像處理學(xué)習(xí)十三——Harris角點(diǎn)檢測(cè)(含代碼)
- 一、角點(diǎn)的概念
- 二、Harris角點(diǎn)檢測(cè)的實(shí)現(xiàn)過程
- 三、Harris代碼應(yīng)用
一、角點(diǎn)的概念
角點(diǎn): 在現(xiàn)實(shí)世界中, 角點(diǎn)對(duì)應(yīng)于物體的拐角, 道路的十字路口、 丁字路口等。
從圖像分析的角度來定義角點(diǎn)可以有以下兩種定義:
角點(diǎn)計(jì)算方法:
角點(diǎn)所具有的特征:
性能較好的角點(diǎn):
下圖展示了一些角點(diǎn)的例子:
二、Harris角點(diǎn)檢測(cè)的實(shí)現(xiàn)過程
三、Harris代碼應(yīng)用
函數(shù):
dst = cv2.cornerHarris( src, blockSize, ksize, k[, dst[, borderType]] )參數(shù)如下所示:
看個(gè)例子:
import cv2 import numpy as np from matplotlib import pyplot as pltimg = cv2.imread('image/harris2.png') print(img.shape) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = np.float32(gray) dst_block9_ksize19 = cv2.cornerHarris(gray, 9, 19, 0.04) img1 = np.copy(img) img1[dst_block9_ksize19 > 0.01 * dst_block9_ksize19.max()] = [0, 0, 255]dst_block5_ksize19 = cv2.cornerHarris(gray, 5, 19, 0.04) img2 = np.copy(img) img2[dst_block5_ksize19 > 0.01 * dst_block5_ksize19.max()] = [0, 0, 255]dst_block9_ksize5 = cv2.cornerHarris(gray, 9, 5, 0.04) img3 = np.copy(img) img3[dst_block9_ksize5 > 0.01 * dst_block9_ksize5.max()] = [0, 0, 255]dst_block9_ksize31 = cv2.cornerHarris(gray, 9, 31, 0.04) img4 = np.copy(img) img4[dst_block9_ksize31 > 0.01 * dst_block9_ksize31.max()] = [0, 0, 255]dst_block9_ksize19_k6 = cv2.cornerHarris(gray, 9, 19, 0.06) img5 = np.copy(img) img5[dst_block9_ksize19_k6 > 0.01 * dst_block9_ksize19_k6.max()] = [0, 0, 255]dst_block9_ksize19_k6_1e_5 = cv2.cornerHarris(gray, 9, 19, 0.06) img6 = np.copy(img) img6[dst_block9_ksize19_k6_1e_5 > 0.00001 * dst_block9_ksize19_k6_1e_5.max()] = [0, 0, 255]titles = ["Original", "block9_ksize19", "dst_block5_ksize19", "dst_block9_ksize5", "dst_block9_ksize31","dst_block9_ksize19_k6", "dst_block9_ksize19_k6_1e_5"] imgs = [img, img1, img2, img3, img4, img5, img6]for i in range(len(titles)):plt.subplot(3, 3, i + 1), plt.imshow(imgs[i]), plt.title(titles[i])plt.xticks([]), plt.yticks([]) plt.show() # cv2.imshow('src',img) # cv2.imshow('dst',img5) # cv2.waitKey(0) # cv2.destroyAllWindows()結(jié)果如下所示:
在判斷出的角點(diǎn)處標(biāo)記為藍(lán)色,上圖為不同參數(shù)設(shè)置下的結(jié)果,效果也是不一樣的。
總結(jié)
以上是生活随笔為你收集整理的OpenCV与图像处理学习十三——Harris角点检测(含代码)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python Cookbook 3rd
- 下一篇: 图像平滑滤波