问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

有用过findcontours找轮廓的吗,contour里面存储的是点向量

发布网友 发布时间:2022-09-25 11:29

我来回答

1个回答

热心网友 时间:2023-09-17 11:00

#include "cv.h"
#include "highgui.h"

using namespace cv;

int main( int argc, char** argv )
{
Mat src;
// the first command-line parameter must be a filename of the binary
// (black-n-white) image
if( argc != 2 || !(src=imread(argv[1], 0)).data)
return -1;

Mat dst = Mat::zeros(src.rows, src.cols, CV_8UC3);

src = src > 1;
namedWindow( "Source", 1 );
imshow( "Source", src );

vector<vector<Point> > contours;
vector<Vec4i> hierarchy;

findContours( src, contours, hierarchy,
CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE );

// iterate through all the top-level contours,
// draw each connected component with its own random color
int idx = 0;
for( ; idx >= 0; idx = hierarchy[idx][0] )
{
Scalar color( rand()&255, rand()&255, rand()&255 );
drawContours( dst, contours, idx, color, CV_FILLED, 8, hierarchy );
}

namedWindow( "Components", 1 );
imshow( "Components", dst );
waitKey(0);
}

注意基本学习方法,查看官方文档,不会的方法查看官方文档和相关参数方法
ht t p ://docs.opencv.org/2.4/moles/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=findcontours#void findContours(InputOutputArray image, OutputArrayOfArrays contours, int mode, int method, Point offset)

也可以采用如下方式

Mat g_grayImage,g_cannayMat_output;
int g_nThresh = 80;
RNG g_rng(12345);

// canny算子检测边缘
Canny(g_grayImage,g_cannyMat_output,g_nThresh,g_nThresh*2,3);
//寻找轮廓
findContours(g_cannyMat_output,contours,hierarchy,RETR_TREE,
CHAIN_APPROX_SIMPLE,Point(0,0));

Mat drawing = Mat::zero(g_cannyMat_output.size(),CV_8UC3);

//绘制轮廓
for(int i = 0;i<contours.size();++i)
{
Scalar color = Scalar(g_rng.uniform(0,255),g_rng.uniform(0,255),
g_rng.uniform(0,255)); //任意值
drawContours(drawing,contours,i,color,2,8,hierarchy,0,Point());
}

imshow(WINDOW_NAME,drawing);

热心网友 时间:2023-09-17 11:00

#include "cv.h"
#include "highgui.h"

using namespace cv;

int main( int argc, char** argv )
{
Mat src;
// the first command-line parameter must be a filename of the binary
// (black-n-white) image
if( argc != 2 || !(src=imread(argv[1], 0)).data)
return -1;

Mat dst = Mat::zeros(src.rows, src.cols, CV_8UC3);

src = src > 1;
namedWindow( "Source", 1 );
imshow( "Source", src );

vector<vector<Point> > contours;
vector<Vec4i> hierarchy;

findContours( src, contours, hierarchy,
CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE );

// iterate through all the top-level contours,
// draw each connected component with its own random color
int idx = 0;
for( ; idx >= 0; idx = hierarchy[idx][0] )
{
Scalar color( rand()&255, rand()&255, rand()&255 );
drawContours( dst, contours, idx, color, CV_FILLED, 8, hierarchy );
}

namedWindow( "Components", 1 );
imshow( "Components", dst );
waitKey(0);
}

注意基本学习方法,查看官方文档,不会的方法查看官方文档和相关参数方法
ht t p ://docs.opencv.org/2.4/moles/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=findcontours#void findContours(InputOutputArray image, OutputArrayOfArrays contours, int mode, int method, Point offset)

也可以采用如下方式

Mat g_grayImage,g_cannayMat_output;
int g_nThresh = 80;
RNG g_rng(12345);

// canny算子检测边缘
Canny(g_grayImage,g_cannyMat_output,g_nThresh,g_nThresh*2,3);
//寻找轮廓
findContours(g_cannyMat_output,contours,hierarchy,RETR_TREE,
CHAIN_APPROX_SIMPLE,Point(0,0));

Mat drawing = Mat::zero(g_cannyMat_output.size(),CV_8UC3);

//绘制轮廓
for(int i = 0;i<contours.size();++i)
{
Scalar color = Scalar(g_rng.uniform(0,255),g_rng.uniform(0,255),
g_rng.uniform(0,255)); //任意值
drawContours(drawing,contours,i,color,2,8,hierarchy,0,Point());
}

imshow(WINDOW_NAME,drawing);
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么退出夸克HD账号登录状态? 猫感冒了看兽医要多少钱 Pka 与 PH的区别及各自的应用领域 储干在公司是干什么的职位啊 2025数字博览会 岗位丨申万宏源证券研究所招聘实习生(可留用), 国海证券研究所+开源证 ... 用发酵粉蒸馒头如何蒸? 雷蛇现在的售后保修政策是怎样的有个鼠标双击了 安代驾好还是e代驾好 急需一篇科技小论文,六年级水平的`要快`谢谢啊`! vector&lt;vector&lt;Point&gt;&gt;& vec2LinePoint什么意思? opencv C++这句是什么意思 vector&lt;vector&lt;Point&gt;&gt;contours; vector&lt;Vec4i&gt;hierarchy; &lt; &lt; &gt;&gt; 都是什么意思哇 去香港用储蓄卡消费好吗? 大陆的银行卡(中行工行),在香港怎么用,可以取钱(人民币或港币)吗, 工行储蓄卡中国旅游卡在香港能不能消费 谁知道张杰,魏晨,朱元冰,刘忻,谢娜,何炅的,知道一个也行 爱情公寓第四部的剧本 何炅有么 何炅的是多少? 天涯明月刀答题用拍照答题行不行 ipad 有cellular的好还是wifi的好 请问工行普通牡丹储蓄卡在香港消费怎样 西洋参可以让黑眼圈消失吗 工商银行卡在香港可以用不? 香港11月前可能会实施海外入境免隔离*,目前当地的疫情形势怎么样? 小型轿车第三者责任险多少钱 形容“蝶恋花”的句子有哪些? 梦见床上有便池便池里有屎尿,我用水冲,冲不下去,后有人冲下去 在自家果园里打五六十平米的三合土,再修个五六十平米的彩钢鸡棚,属于违规建筑吗? 三长两短打一数字 鼎的结构及部首是什么? 郭嘉的“天妒”技能 微信无法登录在新苹果手机上面,总是出现账号被盗嫌疑,怎么办!改了密码还是不行!!_百度问一问 请问一下在电脑上面怎么恢复微信聊天记录 郭嘉的那个天妒是什么意思啊? 郭嘉天妒典故来源? 依米花的花语和含义寓意是什么? 为什么郭嘉的天妒技能有两种说法? 天妒的介绍 QQ幻想世界里的金兰任务 怎么做啊? QQ幻想世界怎么完成金兰之约 qq幻想世界里的金兰之约怎么做 qq幻想世界金兰 QQ幻想世界里的金兰之约任务怎么做? 工商银行信用卡在网上商城如何分期付款 QQ幻想世界的金兰副本怎么打的 支持工商银行信用卡分期付款的网上商城有哪些? QQ幻想世界金兰之约任务 QQ幻想世界“金兰之约”规则介绍。