1 Star 3 Fork 0

邮箱猫/qtForOpencv

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
skeletondialog.cpp 1.67 KB
一键复制 编辑 原始数据 按行查看 历史
邮箱猫 提交于 2021-12-02 19:09 . 添加特征实验代码
#include "skeletondialog.h"
#include "ui_skeletondialog.h"
SkeletonDialog::SkeletonDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::SkeletonDialog)
{
ui->setupUi(this);
}
SkeletonDialog::~SkeletonDialog()
{
delete ui;
}
void SkeletonDialog::on_buttonBox_accepted()
{
int width=ui->widthSlider->value();
int height=ui->heightSlider->value();
int px=ui->XlineEdit->text().toInt();
int py=ui->YlineEdit->text().toInt();
int structType=0;
if(ui->structcB->currentIndex()==0){
structType=MORPH_RECT;
}else if(ui->structcB->currentIndex()==1){
structType=MORPH_ELLIPSE;
}else if(ui->structcB->currentIndex()==2){
structType=MORPH_CROSS;
}
//获取结构元素
Mat structureElement = getStructuringElement(structType, Size(width, height), Point(px, py));
Mat tot=image.clone();
//将图像转化为灰度图处理
cvtColor(tot,tot,CV_BGR2GRAY);
//初始化目标图像
Mat dst=Mat::zeros(image.rows,image.cols,CV_8UC1);
//判断图像中是否还有不为0的点
while(countNonZero(tot)!=0){
Mat temp=tot.clone();
//开运算
erode(temp, temp, structureElement);
dilate(temp, temp, structureElement);
//与之前结果相加
dst=dst|(tot-temp);
//腐蚀运算
erode(tot, tot, structureElement);
}
cvtColor(dst,dst,CV_GRAY2BGR);
emit sendImage(dst);
}
void SkeletonDialog::receiveImage(Mat src){
image = src;
}
void SkeletonDialog::on_heightSlider_valueChanged(int value)
{
ui->label_height->setNum(value);
}
void SkeletonDialog::on_widthSlider_valueChanged(int value)
{
ui->label_width->setNum(value);
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/yuka_kitten/qt-for-opencv.git
git@gitee.com:yuka_kitten/qt-for-opencv.git
yuka_kitten
qt-for-opencv
qtForOpencv
master

搜索帮助