没有合适的资源?快使用搜索试试~ 我知道了~
基于OpenCV根据原理腐蚀膨胀源码

温馨提示
基于OpenCV,根据腐蚀膨胀原理写的图像的腐蚀膨胀源码,没有调用现成函数,以前课程设计的结果。
资源推荐
资源详情
资源评论






格式:rar 资源大小:1.7MB
























image.h
#ifndef _IMAGE_H_
#define _IMAGE_H_
#include <opencv.hpp>
using namespace cv;
//图像灰度处理
Mat RGB2GRAY(const Mat src);
//阈值
float Threshold(const Mat src);//输入参数为灰度图像
//图像二值化
Mat GRAYtoBinaryzation(const Mat src,float threshold);//src为灰度图像;threshold为阈值
//图像膨胀
Mat GrayDilate(const Mat src,uchar kernel[3][3]);
//图像腐蚀
Mat GrayErode(const Mat src,uchar kernel[3][3]);
#endif /*_IMAGE_H_*/
image.cpp
#include "image.h"
//灰度处理
Mat RGB2GRAY(const Mat src){
int PointR,PointG,PointB;//RGB图像的每个通道的数值
int PointGray;//灰度图像每个像素的值
#ifndef _IMAGE_H_
#define _IMAGE_H_
#include <opencv.hpp>
using namespace cv;
//图像灰度处理
Mat RGB2GRAY(const Mat src);
//阈值
float Threshold(const Mat src);//输入参数为灰度图像
//图像二值化
Mat GRAYtoBinaryzation(const Mat src,float threshold);//src为灰度图像;threshold为阈值
//图像膨胀
Mat GrayDilate(const Mat src,uchar kernel[3][3]);
//图像腐蚀
Mat GrayErode(const Mat src,uchar kernel[3][3]);
#endif /*_IMAGE_H_*/
image.cpp
#include "image.h"
//灰度处理
Mat RGB2GRAY(const Mat src){
int PointR,PointG,PointB;//RGB图像的每个通道的数值
int PointGray;//灰度图像每个像素的值
Mat dst;
dst = Mat::zeros(src.rows,src.cols,CV_8UC1);//创建一个和原图同样大小的单通道图像空间
for(int i=1;i<src.rows;i++){
for(int j=1;j<src.cols;j++){
PointB = src.at<Vec3b>(i,j)[0]; //获取原图像蓝色通道的灰度值
PointG = src.at<Vec3b>(i,j)[1]; //获取原图像绿色通道的灰度值
PointR = src.at<Vec3b>(i,j)[2]; //获取原图像红色通道的灰度值
//计算该像素点的灰度值
PointGray = PointR*0.299 + PointG*0.587 + PointB*0.114;
dst.at<uchar>(i,j) = PointGray; //为灰度空间内赋转换后的灰度值
}
}
return dst;
}
//阈值
float Threshold(const Mat src){
float threshold = 0;
for(int i=1;i<src.rows;i++){
for(int j=1;j<src.cols;j++){
threshold += src.at<uchar>(i,j); //计算所有像素的灰度之和
}
}
return (threshold/(src.rows*src.cols)); //返回灰度的平均值乘以
}
//二值化
Mat GRAYtoBinaryzation(const Mat src,float threshold){
Mat dst; //二值空间
dst = Mat::zeros(src.rows,src.cols,CV_8UC1);//创建一个和原图同样大小的单通道空间
dst = Mat::zeros(src.rows,src.cols,CV_8UC1);//创建一个和原图同样大小的单通道图像空间
for(int i=1;i<src.rows;i++){
for(int j=1;j<src.cols;j++){
PointB = src.at<Vec3b>(i,j)[0]; //获取原图像蓝色通道的灰度值
PointG = src.at<Vec3b>(i,j)[1]; //获取原图像绿色通道的灰度值
PointR = src.at<Vec3b>(i,j)[2]; //获取原图像红色通道的灰度值
//计算该像素点的灰度值
PointGray = PointR*0.299 + PointG*0.587 + PointB*0.114;
dst.at<uchar>(i,j) = PointGray; //为灰度空间内赋转换后的灰度值
}
}
return dst;
}
//阈值
float Threshold(const Mat src){
float threshold = 0;
for(int i=1;i<src.rows;i++){
for(int j=1;j<src.cols;j++){
threshold += src.at<uchar>(i,j); //计算所有像素的灰度之和
}
}
return (threshold/(src.rows*src.cols)); //返回灰度的平均值乘以
}
//二值化
Mat GRAYtoBinaryzation(const Mat src,float threshold){
Mat dst; //二值空间
dst = Mat::zeros(src.rows,src.cols,CV_8UC1);//创建一个和原图同样大小的单通道空间
剩余6页未读,继续阅读
资源评论

- BJWcn2023-07-24作者很好地解释了腐蚀膨胀的实现过程,使得即使是新手也能够轻松上手。
- 柔粟2023-07-24该文件提供了完整的源码,方便读者进行实践和调试。
- 玛卡库克2023-07-24文件结构清晰,段落层次分明,让读者能够快速找到所需信息。
- 焦虑肇事者2023-07-24作者对腐蚀膨胀的应用场景进行了简要描述,有助于读者理解其实际应用价值。
- 邢小鹏2023-07-24这个文件详细介绍了OpenCV中腐蚀膨胀的原理,让人可以更好地理解其运作方式。

berry丶
- 粉丝: 213
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 微信小程序MD5加密(支持中文).zip
- [贵州]某机场扩建工程监理大纲(停机坪-滑行道-技术标).doc
- 污水厂在线仪表维护方案.doc
- 基础(桩)工程施工承包合同(分包合同).doc
- 第四大题-市场战略.doc
- 销售人员的薪酬设计.doc
- 工程案例分析教案.doc
- 如何给予积级的反馈.doc
- 建设工程委托监理合同补充协议.doc
- 公司综合大楼工程监理规划.doc
- 小程序转换器,基于支付宝_微信小程序, 轻松地转换成其它平台的小程序。(1).zip
- 微信小程序刻度尺组件.zip
- 2016年中学学生宿舍楼新建工程招标文件.doc
- 高层住宅楼工程施工进度计划管理措施.doc
- 电路分析填空题.docx
- FIDIC施工合同条件.ppt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
