没有合适的资源?快使用搜索试试~ 我知道了~
基于OpenCV根据原理腐蚀膨胀源码
5星 · 超过95%的资源 需积分: 48 11 下载量 101 浏览量
2019-04-10
16:11:45
上传
评论
收藏 5KB TXT 举报
温馨提示
试读
7页
基于OpenCV,根据腐蚀膨胀原理写的图像的腐蚀膨胀源码,没有调用现成函数,以前课程设计的结果。
资源推荐
资源详情
资源评论
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丶
- 粉丝: 203
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功