当前位置:网站首页>【opencv】图像形态学操作-opencv标记不同连通域的位置
【opencv】图像形态学操作-opencv标记不同连通域的位置
2022-07-06 22:59:00 【GLL_】
【opencv】图像形态学操作-opencv标记不同连通域的位置
/** @overload
@param image the 8-bit single-channel image to be labeled
@param labels destination labeled image
@param stats statistics output for each label, including the background label.
Statistics are accessed via stats(label, COLUMN) where COLUMN is one of
#ConnectedComponentsTypes, selecting the statistic. The data type is CV_32S.
@param centroids centroid output for each label, including the background label. Centroids are
accessed via centroids(label, 0) for x and centroids(label, 1) for y. The data type CV_64F.
@param connectivity 8 or 4 for 8-way or 4-way connectivity respectively
@param ltype output image label type. Currently CV_32S and CV_16U are supported.
*/
CV_EXPORTS_W int connectedComponentsWithStats(InputArray image, OutputArray labels,
OutputArray stats, OutputArray centroids,
int connectivity = 8, int ltype = CV_32S);
system("color F0");
Mat img = imread("D:/image/ml2.png");
if (img.empty()) {
cout << "img is empty." << endl;
return;
}
//imshow("srcImg", img);
Mat rice, riceBW;
cvtColor(img, rice, COLOR_BGR2GRAY);
imshow("rice", rice);
threshold(rice, riceBW, 50, 255, THRESH_BINARY);
imshow("riceBW", riceBW);
RNG rng(10086);
Mat out, stats, centroids;
//
int number = connectedComponentsWithStats(riceBW, out, stats, centroids, 8, CV_16U);
vector<Vec3b> colors;
for (int i = 0; i < number; i++) {
Vec3b vec3 = Vec3b(rng.uniform(0, 256), rng.uniform(0, 256), rng.uniform(0, 256));
colors.push_back(vec3);
}
Mat result = Mat::zeros(rice.size(), img.type());
int w = result.cols;
int h = result.rows;
for (int i = 1; i < number; i++) {
int center_x = centroids.at<double>(i, 0);
int center_y = centroids.at<double>(i, 1);
int x = stats.at<int>(i, CC_STAT_LEFT);
int y = stats.at<int>(i, CC_STAT_TOP);
int w = stats.at<int>(i, CC_STAT_WIDTH);
int h = stats.at<int>(i, CC_STAT_HEIGHT);
int area = stats.at<int>(i, CC_STAT_AREA);
circle(img, Point(center_x, center_y), 2, Scalar(0, 255, 0), 2, 8, 0);
Rect rect(x, y, w, h);
rectangle(img, rect, colors[i], 1, 8, 0);
putText(img, format("%d", i), Point(center_x, center_y),
FONT_HERSHEY_SIMPLEX, 0.5, Scalar(0, 0, 255), 1);
cout << "number: " << i << ",area: " << area << endl;
}
imshow("result:", img);
waitKey(0);
结果:
边栏推荐
- 3GPP信道模型路损基础知识
- Analysis -- MySQL statement execution process & MySQL architecture
- How to design API interface and realize unified format return?
- 批量归一化(标准化)处理
- 动态生成表格
- Chapter 9 Yunji datacanvas company won the highest honor of the "fifth digital finance innovation competition"!
- [practice leads to truth] is the introduction of import and require really the same as what is said on the Internet
- Canteen user dish relationship system (C language course design)
- Leetcode(46)——全排列
- JS variable
猜你喜欢
使用知云阅读器翻译统计遗传学书籍
[hand torn STL] list
Gavin teacher's perception of transformer live class - rasa project actual combat e-commerce retail customer service intelligent business dialogue robot microservice code analysis and dialogue experim
3GPP信道模型路损基础知识
Windows are not cheap things
Vscode automatically adds a semicolon and jumps to the next line
5G VoNR+之IMS Data Channel概念
C语言中函数指针与指针函数
How does vscade use the built-in browser?
JS also exports Excel
随机推荐
IMS data channel concept of 5g vonr+
Chapter 9 Yunji datacanvas was rated as 36 krypton "the hard core technology enterprise most concerned by investors"
[hand torn STL] list
Using thread class and runnable interface to realize the difference between multithreading
Read of shell internal value command
Appium practice | make the test faster, more stable and more reliable (I): slice test
Clickhouse (03) how to install and deploy Clickhouse
高手勿进!写给初中级程序员以及还在大学修炼的“准程序员”的成长秘籍
Addressable 预下载
AOSP ~Binder 通信原理 (一) - 概要
File upload vulnerability summary
Batch normalization (Standardization) processing
Weebly移动端网站编辑器 手机浏览新时代
np.random.shuffle与np.swapaxis或transpose一起时要慎用
【二叉树】二叉树寻路
ThinkPHP关联预载入with
Leetcode minimum difference in student scores
Meow, come, come: do you really know if, if else
一文搞懂常见的网络I/O模型
Analyse approfondie de kubebuilder