- 一、背景
fpga處理大數據時從txt讀取數據形式爲2進制或者16進制,&readmemb/&readmemh,所以需要將數據轉換爲二進制或十六進制存在txt中。
- 二、針對圖像而言可以參考exe>IMG2LCD
- 下載https://zhidao.baidu.com/share/93844ee7ba773f4749c05818618f3231.html
- 使用,一般簡單操作與理解可以參考界面上的幫助文檔,最後的顏色反轉一定要選,該軟件默認白的像素值爲零,黑的像素值爲~~256~~ 255!!!這與在圖像處理中恰好是相反的!!!
補充:保存完之後爲.c文件
首先把括號與數組名去掉包括最後的分號也去除;
crtl +f 把0X 與逗號替換爲空格,最後保存爲.txt
保存爲.txt,FPGA $readmem("filename",memory);調用即可。
- 三、利用vs+opencv寫的程序;opencv只是爲了做圖像讀取與遍歷方便,如果只是一個數直接賦值給tempt就OK了
-
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;
}
- 總結
有時候費勁心思找一些程序直接運行 還不如自己動動腦子來的快~~