首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

OpenCV cornerSubPix 亞像素級角點優化

     編輯:C++ 入門

背景

goodFeaturesToTrack (Shi-Tomasi) 或 Harris 檢測的角點精度僅限像素級。cornerSubPix 通過迭代擬合將角點精度提升至亞像素級。

函數原型

void cornerSubPix(InputArray image, InputOutputArray corners,
                    Size winSize, Size zeroZone, TermCriteria criteria);
  • image:灰度圖。
  • corners:輸入初始角點,輸出優化後角點(Point2f 向量)。
  • winSize:搜索窗口半尺寸,如 Size(5,5) 即 11×11 窗口。
  • zeroZone:中心排除區,通常 Size(-1,-1) 表示不排除。
  • criteria:迭代終止條件,TermCriteria(COUNT+EPS, 40, 0.001)。

完整流程示例

Mat src = imread("house.jpg"), gray;
cvtColor(src, gray, COLOR_BGR2GRAY);

vector corners;
goodFeaturesToTrack(gray, corners, 10, 0.01, 10); // 初檢測

Mat disp1 = src.clone(), disp2 = src.clone();
for (auto p : corners) circle(disp1, p, 3, Scalar(255,0,255), -1);
imshow("Before", disp1);

cornerSubPix(gray, corners, Size(5,5), Size(-1,-1),
             TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 40, 0.001));

for (auto p : corners) circle(disp2, p, 3, Scalar(255,0,255), -1);
imshow("After", disp2);
waitKey(0);

效果

優化前後角點坐標從整數變為浮點數,視覺上更貼合圖像梯度極值。適用於相機標定、縫合等高精度場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved