没有合适的资源?快使用搜索试试~ 我知道了~
形状特征提取代码
5星 · 超过95%的资源 需积分: 50 211 下载量 26 浏览量
2013-06-11
15:17:31
上传
评论 14
收藏 9KB TXT 举报
温馨提示
试读
9页
数字图像处理中对图像形状特征提取,其中包括对面积、周长和圆弧度特征的提取
资源推荐
资源详情
资源评论
void CMy2011302590043View::OnShapeFeatures()
{
// TODO: Add your command handler code here
CMy2011302590043Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
DWORD m_dwSizeImage = pDoc->m_Bmpfile.m_Rows*pDoc->m_Bmpfile.m_Cols*pDoc->m_Bmpfile.m_PxlBytes;
LPBYTE m_lpImageCopy = new BYTE[m_dwSizeImage];
DWORD nWidth=pDoc->m_Bmpfile.m_Cols;
DWORD nHeight=pDoc->m_Bmpfile.m_Rows;
WORD wBitCount=pDoc->m_Bmpfile.m_PxlBytes*8;
DWORD lRowBytes=nWidth*((DWORD)(wBitCount/8));
LPBYTE lpData=pDoc->m_Bmpfile.m_pImgDat;
LPBYTE lpOldBits=m_lpImageCopy;
int stop=0;
int counter=0;//counter用于计算连通数
int i,j,t,present;
DWORD m,n;
BYTE *p_temp;
p_temp=new BYTE[lRowBytes*nHeight];
memset(p_temp,255,lRowBytes*nHeight);
const int T=50;
if (wBitCount == 8)
{
//让第一行和第一列像素值为255,
for(i=0;i<nWidth;i++) *(lpData+(nHeight-1)*lRowBytes+i)=255;
for(j=0;j<nHeight;j++) *(lpData+(nHeight-1-j)*lRowBytes)=255;
{
// TODO: Add your command handler code here
CMy2011302590043Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
DWORD m_dwSizeImage = pDoc->m_Bmpfile.m_Rows*pDoc->m_Bmpfile.m_Cols*pDoc->m_Bmpfile.m_PxlBytes;
LPBYTE m_lpImageCopy = new BYTE[m_dwSizeImage];
DWORD nWidth=pDoc->m_Bmpfile.m_Cols;
DWORD nHeight=pDoc->m_Bmpfile.m_Rows;
WORD wBitCount=pDoc->m_Bmpfile.m_PxlBytes*8;
DWORD lRowBytes=nWidth*((DWORD)(wBitCount/8));
LPBYTE lpData=pDoc->m_Bmpfile.m_pImgDat;
LPBYTE lpOldBits=m_lpImageCopy;
int stop=0;
int counter=0;//counter用于计算连通数
int i,j,t,present;
DWORD m,n;
BYTE *p_temp;
p_temp=new BYTE[lRowBytes*nHeight];
memset(p_temp,255,lRowBytes*nHeight);
const int T=50;
if (wBitCount == 8)
{
//让第一行和第一列像素值为255,
for(i=0;i<nWidth;i++) *(lpData+(nHeight-1)*lRowBytes+i)=255;
for(j=0;j<nHeight;j++) *(lpData+(nHeight-1-j)*lRowBytes)=255;
for(j=1;j<nHeight-1;j++)
{
if(stop==1)
break;
for(i=1;i<nWidth-1;i++)
{
if(counter>255)
{
AfxMessageBox("连通区域数目太多,请减少样本个数");//
stop=1;
return;
}
if(*(lpData+(nHeight-j-1)*lRowBytes+i)<T)//若第(ij)个像素=0!!!!位图扫描顺序从下到上,从左到右
{
if(*(lpData+(nHeight-j-1+1)*lRowBytes+i+1)<T)//若右上像素=0
{
*(p_temp+(nHeight-j-1)*lRowBytes+i)=*(p_temp+(nHeight-j-1+1)*lRowBytes+i+1);//将右上像素标号赋予当前像素
present=*(p_temp+(nHeight-j-1+1)*lRowBytes+i+1);//且将右上像素标号赋给present
if(*(lpData+(nHeight-j-1)*lRowBytes+i-1)<T&&*(p_temp+(nHeight-j-1)*lRowBytes+i-1)!=present)//若左像素=0且标号不等于右上
{
int temp=*(p_temp+(nHeight-j-1)*lRowBytes+i-1);//即有一个等价冲突,将左像素的连通标号赋值给temp
if(temp<present)//如果左像素标号小于右上像素
{
present=temp;//将左的标号赋给present
temp=*(p_temp+(nHeight-j-1+1)*lRowBytes+i+1);//将右上标号赋给temp
}
counter--;
for(m=1;m<nHeight;m++)//这两个for循环的目的是将之前和右上一个连通区域的标号都改为左像素的标号,并将大于右上的标号都减一
剩余8页未读,继续阅读
素者青衣
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 课程设计-基于SpringBoot + Mybatis+python爬虫NBA球员数据爬取可视化+源代码+文档+sql+效果图
- 软件品质管理系列二项目策划规范.doc
- 基于TensorFlow+PyQt+GUI的酒店评论情感分析,支持分析本地数据文件和网络爬取数据分析+源代码+文档说明+安装教程
- 软件定义无线电中的模拟电路测试技术.pptx
- 软件开发协议(作为技术开发合同附件).doc
- 软件开发和咨询行业技术趋势分析.pptx
- 软件测试题详解及答案.doc
- 软件漏洞生命周期管理策略.pptx
- 毕业设计-基于Python实现的的简易气温爬虫,可以爬取全国各市的近7日气温数据
- 软件系统测试报告(实用版).doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页