
使用opencv进行图像的二值化处理时有下面这样一段代码,我不太理解,大家可以给我逐行解释一下吗?谢谢!
for(i=0;i<height;i++)for(j=0;j<width;j++)for(k=0;k<Channels;k++){if(data0[i*step+j+k]...
for(i=0;i<height;i++)
for(j=0;j<width;j++)
for(k=0;k<Channels;k++)
{
if(data0[i*step+j+k]>thresh)
data1[i*step+j+k] = 255;
else
data1[i*step+j+k] = 0;
} 展开
for(j=0;j<width;j++)
for(k=0;k<Channels;k++)
{
if(data0[i*step+j+k]>thresh)
data1[i*step+j+k] = 255;
else
data1[i*step+j+k] = 0;
} 展开
1个回答
展开全部
这个就是用三个循环,按照图片高,宽,和通道的顺序去判断每个像素值是否大于某个阈值,如果大于阈值,则设置为255(也就是白),否则就就设置为0(也就是黑)。
图片的高宽不需要解释,图片的通道常见的就是RGB。
for(i=0;i<height;i++)
for(j=0;j<width;j++)
for(k=0;k<Channels;k++)\\RGB 的话,Channels可能是3,或者4。opencv习惯4个通道,但是最后
\\ 一个通道没用
{
if(data0[i*step+j+k]>thresh)\\ 这个就是判断data0这个里面第i行,j列那个像素第k个通道的值是否大
\\于该阈值
data1[i*step+j+k] = 255;
else
data1[i*step+j+k] = 0;
}
图片的高宽不需要解释,图片的通道常见的就是RGB。
for(i=0;i<height;i++)
for(j=0;j<width;j++)
for(k=0;k<Channels;k++)\\RGB 的话,Channels可能是3,或者4。opencv习惯4个通道,但是最后
\\ 一个通道没用
{
if(data0[i*step+j+k]>thresh)\\ 这个就是判断data0这个里面第i行,j列那个像素第k个通道的值是否大
\\于该阈值
data1[i*step+j+k] = 255;
else
data1[i*step+j+k] = 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询