📄 subject_58555.htm
字号:
<p>
序号:58555 发表者:gogo 发表日期:2003-11-01 22:34:06
<br>主题:图像颜色个数
<br>内容:1、给定彩色图,求它的颜色总数。就是说这幅图里面总共有多少个不同的颜色。<BR>2、把图的颜色个数减半。找两个颜色值最相近的像素,把平均之后的颜色值付给这两个像素。<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>
回复者:无情阁东雪 回复日期:2003-11-01 22:55:00
<br>内容:如果是16位以下的就好办,应该是调色板中颜色数<BR>如果是16以上的,就要得到真正的像素颜色值,对它的RGB分别进行比较了!
<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>回复者:视频新手 回复日期:2003-11-03 15:26:47
<br>内容:#define ColorSpace 256*256*256<BR>int Count[ColorSpace];//需要67M空间<BR>memset(Count,0,sizeof(int)*ColorSpace);<BR>for (int y=0; y<PictureHeight; y++) {<BR> for (int x=0; x<PictureWidth; x++) {<BR> int color = GetPixel(x,y); //取第y行第x列的象素(真彩色24位)<BR> Count[color] ++;<BR> }<BR>}<BR><BR>int i=0;<BR>for (y=0; y<ColorSpace; y++)<BR> if (Count[y]) i++;<BR>//这里i就是颜色总数<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-11-03 17:52:59
<br>内容:注意这里的GetPixel(x,y)函数,可能并不存在<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-11-04 12:50:11
<br>内容:呵呵,楼上的方法思路还行,可以你觉得这样行吗?<BR>#define ColorSpace 256*256*256<BR>int Count[ColorSpace];//需要67M空间
<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-11-04 16:18:40
<br>内容://原来的会出现堆栈溢出<BR>//改成下面这样吧<BR> #define ColorSpace 256*256*256<BR> int* Count = new int[ColorSpace];//需要67M空间<BR> memset(Count,0,sizeof(int)*ColorSpace);<BR> for (int y=0; y<PictureHeight; y++) {<BR> for (int x=0; x<PictureWidth; x++) {<BR> int color = GetPixel(x,y); //取第y行第x列的象素(真彩色24位)<BR> Count[color] ++;<BR> }<BR> }<BR><BR> int i=0;<BR> for (y=0; y<ColorSpace; y++)<BR> if (Count[y]) i++;<BR><BR> delete Count;<BR> //这里i就是颜色总数<BR><BR>//注意这里的GetPixel(x,y)函数,可能并不存在<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-11-04 16:23:56
<br>内容:谢谢4楼提醒.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:gogo 回复日期:2003-11-04 17:48:50
<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>
回复者:视频新手 回复日期:2003-11-04 17:59:34
<br>内容:找两个颜色值最相近的像素, 需要计算色距<BR>两个颜色color1,color2<BR>假定color1的三个分量是r1,g1,b1<BR> color2的三个分量是r2,g2,b2<BR>那么色距 d = sqrt((r2-r1)*(r2-r1) + (g2-g1)*(g2-g1) + (b2-b1)*(b2-b1))<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -