// ShadowDetection.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include<opencv2/opencv.hpp>
using namespace cv;
using namespace std;
//形态学闭运算 先膨胀后腐蚀
Mat Closure(const Mat& img){
Mat dst;
//设置卷积核大小
int element_size = 1;
int s = element_size * 2 + 1;
//闭运算
Mat structureElement = getStructuringElement(MORPH_RECT, Size(s, s), Point(-1, -1));
dilate(img, dst, structureElement, Point(-1, -1), 1);//先膨胀
erode(dst, dst, structureElement, Point(-1, -1));//再腐蚀
return dst;
}
//基于HSV彩色空间的阴影检测///////////////////////////////////////////
Mat HSV(const Mat& img) {
int width = img.cols;
int height = img.rows;
Mat dst,img_hsv;
img_hsv.create(img.size(), img.type());
dst.create(img.size(), CV_8UC3);
//BGR转换到HSV空间
cvtColor(img, img_hsv, COLOR_BGR2HSV);//H色调 S饱和度 V明度
double h, s, v, m;
//计算指数m(-1~1)并进行阈值分割
for (int i = 0; i < height; i++)
for (int j = 0; j < width; j++) {
h = img_hsv.at<Vec3b>(i, j)[0];
s = img_hsv.at<Vec3b>(i, j)[1];
v = img_hsv.at<Vec3b>(i, j)[2];
m = (((s - v) / (h + s + v)));
if (m > 0.3)//分割阈值设为0.3
dst.at<Vec3b>(i, j) = { 0,255,255 };
else
dst.at<Vec3b>(i, j) = { 100,0,100 };
}
//执行闭运算
dst = Closure(dst);
imshow("阴影检测-HSV", dst);
imwrite("HSV.jpg", dst);
return dst;
}
//基于C1C2C3彩色空间的阴影检测////////////////////////////////////////
Mat C1C2C3(const Mat& img) {
int width = img.cols;
int height = img.rows;
Mat dst,temp;
dst.create(img.size(), CV_8UC3);
double C3;
//计算C3指数,并进行双阈值分割
for (int i = 0; i < height; i++)
for (int j = 0; j < width; j++) {
double R = img.at<Vec3b>(i, j)[2];
double G = img.at<Vec3b>(i, j)[1];
double B = img.at<Vec3b>(i, j)[0];
C3 = atan(B / MAX(R,G));
if (C3 > 0.4 && B < 34) //阈值设为C3>0.4和Blue<34
dst.at<Vec3b>(i, j) = { 0,255,255 };
else
dst.at<Vec3b>(i, j) = { 100,0,100 };
}
//执行闭运算
dst = Closure(dst);
imshow("阴影检测-C1C2C3", dst);
imwrite("C1C2C3.jpg", dst);
return dst;
}
int main()
{
Mat srcImg = imread("第三部分 阴影检测/Color.bmp", 4);//保持原通道数原深度
HSV(srcImg);
C1C2C3(srcImg);
waitKey(0);
imshow("test", srcImg);
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 C++基于HSV和C1C2C3彩色空间的阴影检测源码+超详细注释+说明(课程大作业).zipC++基于HSV和C1C2C3彩色空间的阴影检测源码+超详细注释+说明(课程大作业).zip C++基于HSV和C1C2C3彩色空间的阴影检测源码+超详细注释+说明(课程大作业).zip C++基于HSV和C1C2C3彩色空间的阴影检测源码+超详细注释+说明(课程大作业).zip C++基于HSV和C1C2C3彩色空间的阴影检测源码+超详细注释+说明(课程大作业).zipC++基于HSV和C1C2C3彩色空间的阴影检测源码+超详细注释+说明(课程大作业).zip C++基于HSV和C1C2C3彩色空间的阴影检测源码+超详细注释+说明(课程大作业).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
C++基于HSV和C1C2C3彩色空间的阴影检测源码+超详细注释+说明(课程大作业).zip (11个子文件)
项目说明.md 2KB
DstImg
0 2B
1_HSV.jpg 152KB
2_HSV.jpg 295KB
2_C1C2C3.jpg 407KB
1_C1C2C3.jpg 118KB
SrcImg
0 2B
Color.bmp 953KB
zy-3-wd.jpg 511KB
Color.jpg 953KB
ShadowDetection.cpp 3KB
共 11 条
- 1
资源评论
onnx
- 粉丝: 9700
- 资源: 5598
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功