opencv 星空_opencv如何將大于5000像素點的輪廓繪制出來?

contourArea函數的運用。

具體例子可以看下面的。

《如何獲得物體的主要方向?》

代碼略解:

1、讀入圖片,尋找輪廓;

//讀入圖像,轉換為灰度

Mat img = imread("e:/sandbox/pca1.jpg");

Mat bw;

cvtColor(img, bw, COLOR_BGR2GRAY);

//閾值處理

threshold(bw, bw, 150, 255, CV_THRESH_BINARY);

//尋找輪廓

vector > contours;

vector hierarchy;

findContours(bw, contours, hierarchy, CV_RETR_LIST, CV_CHAIN_APPROX_NONE);

2、首先以大小篩選輪廓;

//輪廓分析,找到工件

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

{

//計算輪廓大小

double area = contourArea(contours[i]);

//去除過小或者過大的輪廓區域(科學計數法表示)

if (area < 1e2 || 1e5 < area) continue;

//繪制輪廓

drawContours(img, contours, i, CV_RGB(255, 0, 0), 2, 8, hierarchy, 0);

//尋找每一個輪廓的方向

getOrientation(contours[i], img);

}

3、單獨處理每個輪廓,分析其主要方向,繪制結果

//獲得構建的主要方向

double getOrientation(vector &pts, Mat &img)

{

//構建pca數據。這里做的是將輪廓點的x和y作為兩個維壓到data_pts中去。

Mat data_pts = Mat(pts.size(), 2, CV_64FC1);//使用mat來保存數據,也是為了后面pca處理需要

for (int i = 0; i < data_pts.rows; ++i)

{

data_pts.at(i, 0) = pts[i].x;

data_pts.at(i, 1) = pts[i].y;

}

//執行PCA分析

PCA pca_analysis(data_pts, Mat(), CV_PCA_DATA_AS_ROW);

//獲得最主要分量,在本例中,對應的就是輪廓中點,也是圖像中點

Point pos = Point(pca_analysis.mean.at(0, 0),pca_analysis.mean.at(0, 1));

//存儲特征向量和特征值

vector eigen_vecs(2);

vector eigen_val(2);

for (int i = 0; i < 2; ++i)

{

eigen_vecs[i] = Point2d(pca_analysis.eigenvectors.at(i, 0),pca_analysis.eigenvectors.at(i, 1));

eigen_val[i] = pca_analysis.eigenvalues.at(i,0);//注意,這個地方原代碼寫錯了

}

//在輪廓/圖像中點繪制小圓

circle(img, pos, 3, CV_RGB(255, 0, 255), 2);

//計算出直線,在主要方向上繪制直線

line(img, pos, pos + 0.02 * Point(eigen_vecs[0].x * eigen_val[0], eigen_vecs[0].y * eigen_val[0]) , CV_RGB(255, 255, 0));

line(img, pos, pos + 0.02 * Point(eigen_vecs[1].x * eigen_val[1], eigen_vecs[1].y * eigen_val[1]) , CV_RGB(0, 255, 255));

//返回角度結果

return atan2(eigen_vecs[0].y, eigen_vecs[0].x);

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454966.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454966.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454966.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TS 188字節流結構圖

應該說真正了解TS&#xff0c;還是看了朋友推薦的《數字電視業務信息及其編碼》一書之后&#xff0c;MPEG2 TS和數字電視是緊密不可分割的&#xff0c;值得總結一下其中的一些關系。 ISO/IEC&#xff0d;13818&#xff0d;1&#xff1a;系統部分&#xff1b; ISO/IEC&#xff…

二進制安裝mysql 5.7、mariadb (附yum安裝方式)

前言&#xff1a;本文以mariadb為例進行講解&#xff0c;安裝mysql同理&#xff0c;并以通過測試。安裝前查找系統已安裝的相關包&#xff08;rpm -qa|grep -e "mysql" -e "mariadb"&#xff09;并進行卸載。1、準備mariadb存儲數據庫文件的目錄。mkdir -p…

GLSL/C++ 實現濾鏡效果

入門效果之浮雕 "浮雕"圖象效果是指圖像的前景前向凸出背景。常見于一些紀念碑的雕刻上。要實現浮雕事實上很easy。我們把圖象的一個象素和左上方的象素進行求差運算。并加上一個灰度。這個灰度就是表示背景顏色。這里我們設置這個插值為128 (圖象RGB的值是0-255)。同…

cv mat的shape_pybind11—opencv圖像處理(numpy數據交換)

前言C opencv中圖像和矩陣的表示采用Mat類&#xff0c;比如imread()讀取的結果就是返回一個Mat對象。對于python而言&#xff0c;numpy 通常用于矩陣運算&#xff0c; 矩陣&#xff0c;圖像表示為numpy.ndarray類。因此&#xff0c;想要將python numpy.ndarray的數據傳遞到C op…

H.264算法的優化策略

文章來源&#xff1a; http://www.tichinese.com/Article/Video/200909/2150.html 編輯&#xff1a;小乙哥 1 代碼優化的主要方法 通過代碼移植能夠獲得在DSP上初步運行的代碼&#xff0c;但是它由于沒有考慮到DSP自身的硬件特點&#xff0c;不適合DSP強大的并行處理能力&#…

吃飯、睡覺、打星星之“打星星”!

大家見過這樣的星星么&#xff1f; 你想要多少就可以多少的星星&#xff01;&#xff01;&#xff01; 下面我們就來用奇妙的JavaScript來實現 首先我們要引入一個輸入包 let readline require("readline-sync");然后再讓客戶輸入數字&#xff0c;并將其存放起來con…

mysql 自動分表_Mysql Event 自動分表

create table TempComments Like dycomments;上述 SQL語句創建的新表帶有原表的所有屬性&#xff0c;主鍵&#xff0c;索引等。自動分表怎么做呢&#xff1f;使用上述語句自動創建分表。那么ID怎么設置呢&#xff1f;更改表格自增主鍵的起始值 例如 表格為 xxx_201604 那么將起…

《大道至簡》周愛民讀后感

作為一個準大二的軟件工程系的學生&#xff0c;初讀此書&#xff0c;很多部分是不太容易理解的&#xff0c;自己又沒有經歷過&#xff0c;感覺差了一個高度似的。自己讀的挺蒙&#xff0c;于是就去百度了一下這本書的讀后感&#xff0c;看看別人讀懂了什么&#xff0c;許多的評…

使用iconv-lite解決node當中不支持GBK編碼的問題

1、Node環境當中不支持GBK編碼 node.js當中的Buffer對象支持的編碼格式的種類有限&#xff0c;大概有ascii、utf8、utf16le、ucs2、base64、binary、hex。不支持GBK的編碼形式。對于windows系統來說&#xff0c;由于歷史原因&#xff0c;許多文件默認的編碼格式均為GBK。 比如我…

c1

dmg和package是安裝文件&#xff0c;dmg直接拖進應用程序中&#xff0c;pkg要進行安裝。 playfround是swift項目。--ios -----oc&#xff08;面向對象的C&#xff09; -----swift(oc的封裝)1963年劍橋大學退出cpl,1967年對cpl簡化推出bcpl&#xff0c;1970貝爾實驗室對bcpl簡化…

mysql必_MySQL必知必會(一)

摘自《MySQL必知必會》1.1.1 什么是數據庫數據庫&#xff1a;保存有組織的數據的容器(通常是一個文件或一組文件)人們通常用數據庫這個術語來代表他們使用的數據庫軟件。這是不正確的&#xff0c;它是引起混淆的根源。確切地說&#xff0c;數據庫軟件應稱為DBMS(數據庫管理系統…

python之工作舉例:通過復制NC文件來造數據

1 # 通過對NC文件復制來造數據2 import os, shutil3 4 # 遍歷的根目錄5 root_dir "D:\\test_data\\DISASTER\\"6 # 獲取NC文件的時間7 time_source 201612280800008 # 生成NC文件的時間9 time_new 2018122808000010 11 12 def get_dir_path(dir_name, time_str):1…

Python 3.5.2 TypeError: a bytes-like object is required, not 'str’問題解決方案

運行環境Mac Python 3.5.2 Q: http_response """\ HTTP/1.1 200 OK Hello, World! """ client_connection.sendall(http_response) TypeError: a bytes-like object is required, not str 類型錯誤&#xff0c;需要的是一個byte類型&#xff0…

mysql 集群架構_mysql企業常用集群架構

轉自 https://blog.csdn.net/kingice1014/article/details/760200611、mysql企業常用集群架構在中小型互聯網的企業中。mysql的集群一般就是上圖的架構。WEB節點讀取數據庫的時候讀取dbproxy服務器。dbproxy服務器通過對SQL語句的判斷來進行數據庫的讀寫分離。讀請求負載到從庫…

h.264視頻文件封裝

所謂封裝格式就是將已經編碼壓縮好的視頻軌和音頻軌按照一定的格式放到一個文件中&#xff0c;也就是說僅僅是一個外殼&#xff0c;或者大家把它當成一個放視頻軌和音頻軌的文件夾也可以。說得通俗點&#xff0c;視頻軌相當于飯&#xff0c;而音頻軌相當于菜&#xff0c;封裝格…

python cookbook 筆記三

分組&#xff1a; rows [{address: 5412 N CLARK, date: 07/01/2012},{address: 5148 N CLARK, date: 07/04/2012},{address: 5800 E 58TH, date: 07/02/2012},{address: 2122 N CLARK, date: 07/03/2012},{address: 5645 N RAVENSWOOD, date: 07/02/2012},{address: 1060 W A…

關于Vue2.0,Express實現的簡單跨域

npm install express -g 通過npm全局安裝express&#xff0c;之后可以通過 express --version 來查看express版本 express server 通過express server生成server項目文件 npm install 安裝server的項目依賴 可以通過執行server下的bin\www文件可以開啟服務 在www文件我們可以默…

mysql datetime類型按天查詢_mysql 時間相關sql , 按天、月、季度、年等條件進行查詢...

-- mysql查詢本季度-- 今天select * from ticket_order_detail where to_days(use_time) to_days(now());-- 7天SELECT *FROM ticket_order_detail where DATE_SUB(CURDATE(), INTERVAL 7 DAY) < date( use_time)-- 近30天SELECT *FROM ticket_order_detail where DATE_SUB…

ffmpeg分析系列

hello&#xff0c;各位好&#xff0c;本人是一名嵌入式軟件工程師&#xff0c;目前正使用ffmpeg開發一款嵌入式多媒體播放器&#xff0c;《ffmpeg分析》系列博文是本人在閱讀ffmpeg源代碼時所做的筆記&#xff0c;希望對各位有點幫助。分析過程結合下面的例程&#xff1a;http:…

Linux kernel的中斷子系統之(二):IRQ Domain介紹

返回目錄&#xff1a;《ARM-Linux中斷系統》。 總結&#xff1a;一、二概述了軟硬件不同角度的IRQ Number和HW Interrupt ID&#xff0c;這就需要他們之間架個橋梁。 三介紹了架設這種橋梁的幾種方式&#xff1a;Linear、Radix Tree和no map。 四介紹了兩種基礎數據結構描述中斷…