標題: 串口傳圖 VC [打印本頁]

作者: 51del    時間: 2023-3-13 13:01
標題: 串口傳圖 VC
用vc6寫的一個簡易串口工具,可以通過串口輸入的數(shù)據(jù)(如: 一個像素點(0x12,0xf0)(0x13,0x13)  )生成保存圖片到程序目錄下格式:320*240 ,160*120,80*60都可以

數(shù)據(jù)多了電腦容易卡死,可能是vc串口模塊占用CPU導致
若是有需要會貼上代碼 串口傳圖工具.rar (6.18 MB, 下載次數(shù): 13)

//********************遍歷逐個像素改變圖像******************
                UpdateData(TRUE); //更新所有編輯框的數(shù)據(jù),存入變量
                CString imgstr;
                for(int y=0;y<m_height;y++)        //y<src->height
                {        
                        unsigned char *bslImgData = (unsigned char *)(src->imageData+y*src->widthStep);        //圖像src第y行
                        for(int x=0;x<m_width;x++)        //圖像第x列 src->width        
                                imgstr+=bslImgData[3*x+0]/2;
                }
                m_com.SetOutput(COleVariant(imgstr));        //將字符串發(fā)送出去,因是char型,單字節(jié)的值不大于127(0x7f);
                imgstr.Empty();                //清空數(shù)據(jù)
                cvDestroyWindow("disp");
    }
}
//********************保存圖像******************
void CMyDlg::OnSaveimg()
{
        // TODO: Add your control notification handler code here
        UpdateData(TRUE); //更新所有編輯框的數(shù)據(jù),存入變量
        IplImage *img = cvCreateImage(cvSize(m_width,m_height),8,3);        //默認為三通道圖像寬100,高108
        next=0;
        CByteArray hexdata;
        int len = String2Hex(m_recmsg, hexdata);
        m_recmsg.Empty();        //清空接收緩存
        SetDlgItemText(IDC_RECMSG,m_recmsg);        //清空接收框
        BYTE temp=0,temp2=0;
        for(int v=0;v<img->height;v++)
        {
                unsigned char *imgdat = (unsigned char *)(img->imageData+v*img->widthStep);        //圖像img第y行
                for(int w=0;w<img->width;w++)        //圖像第x列
                {//接收RGB565數(shù)據(jù),數(shù)據(jù)格式為2byte數(shù)據(jù),分別是5位b,6位g,5位r,共同組成
                imgdat[w*3+0] = savimg[next]&0xf8;                //取rgb565的r紅色
                imgdat[w*3+1] =(savimg[next]&0x07)<<5;
                next++;
                imgdat[w*3+1] |=(savimg[next]&0xe0)>>3;        //取rgb565中間b綠色
                imgdat[w*3+2] = (savimg[next]&0x1f)<<3;                //取rgb565的b藍色
                //imgdat[w*3+0] = imgdat[w*3+2] = imgdat[w*3+1];  取藍色作為灰圖顯示
                next++;
                if(len==next)break;
                }
        }
        savimg.Empty();         //清空數(shù)據(jù)
//*********************獲取系統(tǒng)時間保存圖片****************
                CTime time;
                char szTime[100];
                time = CTime::GetCurrentTime();
                sprintf(szTime,"%4d%.2d%.2d%.2d%.2d%.2d%s",time.GetYear(),time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond(),".jpg");
                cvSaveImage(szTime,img);        //保存串口收到的圖像
                AfxMessageBox("保存成功!");
                cvNamedWindow("disp");
                cvShowImage("disp",img);
                cvWaitKey(0);
                cvDestroyWindow("disp");
}


20181226174204.jpg (7.76 KB, 下載次數(shù): 144)

ov7670上傳數(shù)據(jù)生成的圖片

ov7670上傳數(shù)據(jù)生成的圖片

源碼.rar

3.82 KB, 下載次數(shù): 12, 下載積分: 黑幣 -5






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1