1. 程式人生 > >如何將10進位制資料儲存為2進位制資料(IMG2LCD的使用,pic2bin)

如何將10進位制資料儲存為2進位制資料(IMG2LCD的使用,pic2bin)

  • 背景

   fpga處理大資料時從txt讀取資料形式為2進位制或者16進位制,&readmemb/&readmemh,所以需要將資料轉換為二進位制或十六進位制存在txt中。

  • 針對影象而言可以參考exe>IMG2LCD
  1. 下載https://zhidao.baidu.com/share/93844ee7ba773f4749c05818618f3231.html
  2. 使用,一般簡單操作與理解可以參考介面上的幫助文件,最後的顏色反轉一定要選,該軟體預設白的畫素值為零,黑的畫素值為256!!!這與在影象處理中恰好是相反的!!!

  • 利用vs+opencv寫的程式;opencv只是為了做影象讀取與遍歷方便,如果只是一個數直接賦值給tempt就OK了
  1. int main(int argc, char **argv)

    {

        ofstream out("bin.txt",ios::out);

        Mat srcImg = imread(picname,0);    //開啟影象

        resize(srcImg,srcImg,Size(640,480));

        if (srcImg.empty())                                                                                                                                                                       {

            cerr << "failed to open the file : " << picname << endl;
            return -1;
        }

        vector <int> tempt;
        int temp;
        for (int i = 0; i < srcImg.rows; i++)
            for (int j = 0; j < srcImg.cols; j++)
            {
                temp = srcImg.at<uchar>(i, j);
                //cout << temp << endl;
                out  << endl;
                for (int m = 0; m < 8;m++)            {
                    if (temp % 2  ==1) tempt.push_back(1);
                    else  tempt.push_back(0);

                    temp  = temp /2;
                }
                int k =  7;
                int b =  7;
                while (b>=0)
                {
                    cout << tempt[k--];
                    out << tempt[b--];
                }
                cout << endl;
                out <<" ";
                tempt.clear();
            }
        out.close();
        return 0;
    }

  • 總結

有時候費勁心思找一些程式直接執行  還不如自己動動腦子來的快~~