opencv PCA 求輪廓的形心

2021-07-16 21:33:27 字數 1199 閱讀 6907

pca的詳細功能不是很了解。但是,發現用它來求形心非常好。輸入為findcontours之後的輪廓點,輸出為形心的座標。

話不多說,上**。

//開發環境,opencv3.1.0+vs2013

#include #include using namespace std;

using namespace cv;

cv::point chao_getcentroid(std::vectorlist);//得到形心座標,

int main()

imshow("src", src);

mat gray;

cvtcolor(src, gray, color_bgr2gray);

mat bw;

threshold(gray, bw, 50, 255, cv_thresh_binary | cv_thresh_otsu);

vectorhierarchy;

vector> contours;

mat bw_back = 255 - bw;

for (size_t i = 0; i < contours.size(); ++i)

imshow("output", src);

waitkey(0);

return 0;

}cv::point chao_getcentroid(std::vectorlist)

//perform pca analysis

pca pca_analysis(data_pts, mat(), cv_pca_data_as_row);

//store the center of the object

point cntr = point(static_cast(pca_analysis.mean.at(0, 0)),

static_cast(pca_analysis.mean.at(0, 1)));

return cntr;

}

效果如下圖所示

關於pca詳細使用,可參考官方例程,opencv3.1.0\sources\samples\cpp\tutorial_code\ml\introduction_to_pca資料夾下的introduction_to_pca.cpp檔案

OPENCV繪製指定色塊的輪廓和形心

效果展示 思路是將轉化為hsv格式,然後用inrange函式變為黑白二值化影象,二值化影象有噪點時用開操作閉操作去除,用canny運算元檢測邊緣,findcontours函式尋找輪廓,再計算輪廓矩 和中心,再繪製輪廓和形心 轉化為hsv格式 圖為各種顏色的hsv值對應表 cvtcolor src,h...

美麗的心形函式

剛剛使用docker 安裝了,tensorflow 的環境 發現上面的帶了好多的畫圖的函式。於是研究起心型函式。使用np畫圖 from matplotlib import pyplot as plt import numpy as np size 2 x np.linspace size,size,...

美麗的心形函式

剛剛使用docker 安裝了,tensorflow 的環境 發現上面的帶了好多的畫圖的函式。於是研究起心型函式。使用np畫圖 from matplotlib import pyplot as plt import numpy as np size 2 x np.linspace size,size,...