📄 subject_39978.htm
字号:
<p>
序号:39978 发表者:uswrs 发表日期:2003-05-15 00:05:31
<br>主题:请教有关VC彩色图像处理
<br>内容:我一直搞黑白图像处理,想知道怎样处理彩色图像。我的程序可以<BR>读彩色图像,但不知怎样可以处理它。在哪里可以添加对红,绿,兰<BR><BR>色的处理。<BR><BR>非常感谢高手的指点。
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:fenghan 回复日期:2003-05-16 12:22:27
<br>内容:如果你处理的是8位灰度图,那么24位真彩色位图只是其扩充。原来的每个象素一个值(0——255),现在是每个象素三个(0——255)的值。然后在卷积时注意这一点就好了。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:uswrs 回复日期:2003-05-18 01:51:57
<br>内容:能不能给我一个简单彩色处理的 VC 源码
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:fenghan 回复日期:2003-05-18 10:52:14
<br>内容: 我还没有写,等我写好了,就传给你.:)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:罗兹维尔 回复日期:2003-05-18 12:08:07
<br>内容:我也要<BR><BR>不过象边缘处理的一些算法对彩色图像有没有用?<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:uswrs 回复日期:2003-05-19 06:45:54
<br>内容:非常感谢 fenghan <BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:fenghan 回复日期:2003-05-19 09:51:45
<br>内容:以下是对一个256×256,24bit真彩色图像的拉普拉斯边缘检测算法,采用3×3算子,算子可以更改,比如说sobel等。LoadImg(),ShowImg()的程序没有给出,我想应该问题不大。<BR><BR>void CShowBMPView::LapulasRGBImg(unsigned char * Img,unsigned char * DestImg,int * Mask)<BR>{<BR> int x,y,m,n;<BR> float r,g,b;<BR> r=g=b=0.0;<BR> CDC * dc;<BR> dc=GetDC();<BR> for(y=1;y<ImgH-1;y++)<BR> for(x=1;x<ImgW-1;x++)//不能访问边界点<BR> {<BR> r=0.0;<BR> g=0.;<BR> b=0.;<BR> for(n=-1;n<=1;n++)<BR> for(m=-1;m<=1;m++)<BR> {//分别对三个颜色值卷积<BR> r+=Img[((x+m)+(y+n)*ImgW)*3+2]*Mask[(1+m)+(1+n)*3];<BR> g+=Img[((x+m)+(y+n)*ImgW)*3+1]*Mask[(1+m)+(1+n)*3];<BR> b+=Img[((x+m)+(y+n)*ImgW)*3]*Mask[(1+m)+(1+n)*3];<BR> }//for,m,n<BR>//饱和运算<BR> r+=128;<BR> g+=128;<BR> b+=128;<BR> if(r<0) r=0;<BR> if(r>255) r=255;<BR> if(g<0) g=0;<BR> if(g>255) g=255;<BR> if(b<0) b=0;<BR> if(b>255) b=255;<BR>/////////<BR> DestImg[(x+y*ImgW)*3+2]=(unsigned char)r;<BR> DestImg[(x+y*ImgW)*3+1]=(unsigned char)g;<BR> DestImg[(x+y*ImgW)*3]=(unsigned char)b;<BR> <BR> }//of x,y<BR> ShowRGBImg(dc,DestImg,0,ImgH);//自己的显示函数,因人而异<BR> ReleaseDC(dc);<BR>}<BR>其中Img[](unsigned char )存放原始图像,DestImg[][](unsigned char )存放处理后图像。Mask[]为算子。请直接拷贝进vc,这样看起来方便些。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:uswrs 回复日期:2003-05-20 22:07:02
<br>内容:多谢 fenghan 慷慨的帮助。Well done!<BR>2003-5-25 3:27:23
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -