各位大佬,谁做过将采集得图像进行二值化,目前图像采集没有问题,但是一直二值化有问题;我得二值化程序如下:
u32 dcmi_line_buf[2][jpeg_line_size];
//RGBÆÁÊý¾Ý½ÓÊջص÷º¯Êý
void rgblcd_dcmi_rx_callback(void)
{
u16 *pbuf;
u32 i;
if(DMA2_Stream1->CR&(1<<19))//DMAʹÓÃbuf1,¶ÁÈ¡buf0
{
pbuf=(u16*)dcmi_line_buf[0];
}
else //DMAʹÓÃbuf0,¶ÁÈ¡buf1
{
pbuf=(u16*)dcmi_line_buf[1];
}
//二值化
for(i=0;i<lcddev.width;i++)
{
*(pbuf+i)=Binary(*(pbuf+i));
}
LTDC_Color_Fill(0,curline,lcddev.width-1,curline,pbuf);//DM2DÌî³ä
if(curline<lcddev.height)curline++;
}
u16 Binary(u16 pixel)
{
u16 R,G,B,RGB_R=0x1f,RGB_G=0x3f,RGB_B=0x1f;
static u16 Gray;
//ÌáÈ¡R,G,BÖµ Ò»°ãÊÇ8Ϊ¼ÆË㣬´Ë´¦Îª12λ¼ÆËã
R=(pixel>>11)&RGB_R;
G=( pixel>>5)&RGB_G;
B=( pixel>>0)&RGB_B;
//»Ò±È¶È¼ÆËã
// Gray=(u16)(R*634+G*613+B*232);
Gray = (B<<11)+(G<<5)+(R<<0); //2020825Ôö¼Ó
if(Gray<THERSHOLD)
Gray=WHITE;
else if (Gray>THERSHOLD)
Gray=BLACK;
return Gray;
}
出来的图像如下:
|