日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何获得物体的主要方向?

發布時間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何获得物体的主要方向? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題來源為網友提供的資料,原文地址為:《Object Orientation, Principal Component Analysis & OpenCV》

問題描述: 對于這樣的圖像(2副,采用了背投光),如何獲得上面工件的主要方向 ? 主要思路: 1、分別獲得每個工件的輪廓; 2、處理每個輪廓,采用pca(主成分分析)方法,獲得所有輪廓點的集合的中點,主要方向等信息; 3、繪圖并返回結果。 ? 注:pca相關函數請查看 https://docs.opencv.org/master/d3/d8d/classcv_1_1PCA.html 代碼略解: 1、讀入圖片,尋找輪廓; //讀入圖像,轉換為灰度
????Mat?img?=?imread("e:/sandbox/pca1.jpg");
????Mat?bw;
????cvtColor(img,?bw,?COLOR_BGR2GRAY);
????//閾值處理
????threshold(bw,?bw,?150,?255,?CV_THRESH_BINARY);
????//尋找輪廓
????vector<vector<Point>?>?contours;
????vector<Vec4i>?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<Point>?&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<double>(i,?0)?=?pts[i].x;
????????data_pts.at<double>(i,?1)?=?pts[i].y;
????}
????//執行PCA分析
????PCA?pca_analysis(data_pts,?Mat(),?CV_PCA_DATA_AS_ROW);
????//獲得最主要分量,在本例中,對應的就是輪廓中點,也是圖像中點
????Point?pos?=?Point(pca_analysis.mean.at<double>(0,?0),pca_analysis.mean.at<double>(0,?1));
????//存儲特征向量和特征值
????vector<Point2d>?eigen_vecs(2);
????vector<double>?eigen_val(2);
????for?(int?i?=?0;?i?<?2;?++i)
????{
????????eigen_vecs[i]?=?Point2d(pca_analysis.eigenvectors.at<double>(i,?0),pca_analysis.eigenvectors.at<double>(i,?1));
????????eigen_val[i]?=?pca_analysis.eigenvalues.at<double>(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);
} 結果展示: 感謝關注,希望有所幫助。 此外,特別感謝:https://github.com/NickeManarin/ScreenToGif/wiki/Help 提供的這個gif錄屏軟件,非常好用。

?

轉載于:https://www.cnblogs.com/jsxyhelu/p/7690699.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的如何获得物体的主要方向?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久中文字幕精品 | 国产又粗又深又猛又爽又在线观看 | 成人免费毛片糖心 | 日本黄页网站 | 欧美高清视频一区二区三区 | 国内精品免费视频 | 在线播放黄色网址 | 国产一区黄 | 国产精品露脸视频 | 日本aⅴ片 | 欧美成人手机在线 | 亚洲无限码 | 中文字幕一区二区av | 99视频在线看 | 黄色网址你懂的 | 亚洲艹| 伊人久久在线 | 亚洲av激情无码专区在线播放 | 爱爱视频免费网站 | 俺去久久 | 丝袜美女av| 国产丝袜高跟 | 日韩男人的天堂 | 中文字幕日韩经典 | 少女与动物高清版在线观看 | 91看视频 | 国产精品欧美激情在线 | www.久久爱 | 国语对白av | 四虎永久在线视频 | 少妇中文字幕 | 北条麻妃99精品青青久久 | 国产精品色婷婷99久久精品 | 98久久 | 亚洲永久在线观看 | 厕拍极品 | 一边摸一边做爽的视频17国产 | 日日爽视频 | 卡一卡二卡三 | 手机看片国产日韩 | 久久久久亚洲色欲AV无码网站 | 精品在线二区 | 区一区二视频 | 色婷婷av一区二区三区gif | 精品午夜一区二区 | 色5566| 哺乳期喷奶水丰满少妇 | 日本吃奶摸下激烈网站动漫 | 亲女禁h啪啪宫交 | 91亚洲国产成人精品一区二区三 | 60分钟| 日韩一区二区a片免费观看 伊人网综合在线 | 女同性αv亚洲女同志 | 成人av资源站 | 日本一区二区在线观看视频 | 国产精品欧美激情 | 国产亚洲精久久久久久无码苍井空 | 成人性做爰aaa片免费 | 亚洲卡一 | 久久久久人妻一区精品色欧美 | 2024国产精品视频 | 美女张开腿让男人桶爽 | 美丽的姑娘观看在线播放 | 国产香蕉在线 | 国产精品美女久久久免费 | 都市激情一区 | 蜜芽在线视频 | 久久久男人天堂 | 成人午夜精品视频 | 亚洲女人初尝黑人巨大 | 乱图区 | 中文字幕电影av | 免费看裸体视频网站 | 欧美成欧美va | 四虎首页 | 久久久99久久 | 美女性高潮视频 | 欧美日韩国产免费观看 | 国产精品久久久久9999爆乳 | 自拍视频在线播放 | 97久久国产 | 黄色av网站免费在线观看 | 91久久超碰 | 日韩美女国产精品 | 亚洲av综合色区无码二区爱av | 91精品国产高潮对白 | 久久午夜福利电影 | 黄色网页免费在线观看 | ⅹxxxxhd亚洲日本hd老师 | 色狠狠一区二区 | 三级av在线免费观看 | 亚洲一级片| 美女下部无遮挡 | 大香蕉毛片 | 亚洲女优在线播放 | 日韩精品视频免费在线观看 | 亚洲AV无码成人国产精品色 | 国产日韩专区 | 免费麻豆国产一区二区三区四区 |