1. 哪種編程語言最適合做圖像識別
c,很多演算法都是用c寫的,如果是匯編編寫的優化演算法也提供c語言介面以便調用。
2. 基於C語言的圖像識別的經典材料嗎
沒有什麼基於C語言的圖像識別材料的,圖像識別技術大多講的都是各種演算法。建議搜索一些OpenCV相關的資料,裡面會有相關圖像識別的內容。個人感覺用OpenCV來入門學習圖像識別技術比較好,因為它把復雜的演算法封裝成API函數了,理解起來比那些枯燥的圖像演算法書籍要容易的多,因為後者更像是一本數學書,看起來費勁而且容易厭煩。等把OpenCV用熟,需要改某個API函數時,再去理解演算法就容易的多
(以上是個人經驗)
3. 做圖像識別演算法用什麼語言好
圖像識別 C++ 語言是最好的。
有C的基礎,入門很容易。
再往下就看你的天賦和學習能力了。
4. 我想用C語言做 表情識別,不知道用什麼演算法好
C還沒寫過那麼高深的程序,不過用VB做過,圖像對比的程序,你可以參考一下,VB中兩個圖片對比的程序哦。那個圖像對比用的是像素對比法。不知道表情識別能不能用。
5. 單片機圖像識別
圖像識別演算法很重要,開發演算法一般用matlab等數學軟體模擬,其語言和c語言差不多。
dsp晶元和單片機差別還是很大的
所謂單片機就是在一塊晶元上集成了cpu、ram、rom(eprom或eeprom)、時鍾、定時/計數器、多種功能的串列和並行i/o口。除了以上基本功能外,有的還集成有a/d、d/a,甚至無線通信等功能(單片機發展的一個趨勢——片上系統
soc)。價錢低廉,實現簡單的智能化控制功能。
dsp具有更快的cpu,更大容量的存儲器,內置有波特率發生器和fifo緩沖器。提供高速、同步串口和標准非同步串口。dsp器件採用改進的哈佛結構,具有獨立的程序和數據空間,允許同時存取程序和數據。內置高速的硬體乘法器,增強的多級流水線,使dsp器件具有高速的數據運算能力。dsp器件比16位單片機單指令執行時間快8~10倍,完成一次乘加運算快16~30倍。dsp器件還提供了高度專業化的指令集,提高了fft快速傅里葉變換和濾波器的運算速度。功能強大,當然價錢也不菲,所以dsp多用在要求高速數據計算的場合。
進行圖像識別,得用dsp,當然還得搭配其他外圍器件,因為dsp器件只是進行數據的計算和處理。整個系統還需要攝像機、ccd攝像頭或者高速ad做視頻信號的採集,把圖像信號數字化了再處理。數據處理後保存到存儲器或者輸出到顯示器輸出。
一般學圖像識別研究演算法的比較多,開發硬體的比較少。
6. 用C++或C語言實現圖象識別
1.將全部三個圖像的 BMP 24Bits 全彩色點陣圖數據整理成 long 型,BMP_Color_Data[i*m + j] = 65536*Blu[m][n] + 256*Gre[m][n] + Red[m][n] ...........二維圖像數據保存成一維的 long 型數據串。
2.將小圖像的點陣圖數據按照大點陣圖數據的行數為「周期」 T 掃描,即將小點陣圖的第一行 long 數據串作為樣本,在大點陣圖數據中尋找匹配段:如果有,則記錄「部分匹配標志(即部分包含,交集關系)」按照那個周期 T 直接到下一「段」檢查是否匹配,直至掃描完全樣本數的段,如果全部符合匹配條件,則置「完全匹配標志(即完全包含,子集關系)」....在此任何段中,如果不匹配,則 break ;
3.結論:有交集關系則為部分包含,有子集關系則有完全包含。
起始坐標比較好計算,即開始數據串的位置數,分解成大圖的行列數。
7. 如何用c語言讀取圖片
#include
using namespace std;
#define Twoto1(i,j,w) i*w+j
void createimage(unsigned char *&img, int w, int h)
{img = new unsigned char[w*h];}
void delateimage(unsigned char*img)
{delete []img;}
void readimage(unsigned char*img, int w, int h, char *fname)
{
FILE *fp;
fopen_s(&fp,fname, "rb");
if (fp == NULL){ cout << "error" << endl; return; }
size_t result;
result=fread(img , sizeof(unsigned char), w*h, fp);
if (result != w*h)
{
cout << "Reading error" << endl;
return;
}
else
cout << "Reading Ok!" << endl;
fclose(fp);
}
void mobanjuanji(unsigned char image, unsigned char*image1, int w, int h, float moban[5][5])
{
for (int i = 0; i for (int j = 0; j if (iw - 3 || j>h - 3)
image1[Twoto1(i,j,w)] = 0;
else
{
float temp = 0;
for (int m = 0; m<5; m++)
for (int n = 0; n<5; n++)
{
temp += (image[Twoto1(i-2+m,j-2+n,w)] moban[m][n]);
}
if (temp>255) image1[Twoto1(i, j, w)] = 255;
else if (temp<0) image1[Twoto1(i, j, w)] = 0;
else image1[Twoto1(i, j, w)] = temp;
}
}
void saveimage(unsigned char *img, int w, int h, char *fname)
{
FILE *fp;
fopen_s(&fp, fname, "wb");
if (fp == NULL) { cout << "error" << endl; return; }
size_t result;
result = fwrite(img, sizeof(unsigned char), w*h, fp);
if (result != w*h)
{
cout << "Write error" << endl;
return;
}
else
cout << "Write Ok!" << endl;
fclose(fp);
}
void main()
{
unsigned char *img;
unsigned char *img1;
float moban[5][5] = { {0,0,0,0,0},{0, -1, 0, 1, 0 }, { 0, -2, 0, 2, 0 }, { 0, -1, 0, 1, 0 }, { 0,0,0,0,0 } };
//float moban[5][5] = { 0 };
int w = 512, h = 512;
createimage(img, w, h);
createimage(img1, w, h);
readimage(img, w, h, "E:ss.raw");
mobanjuanji(img, img1,w, h, moban);
saveimage(img, w, h, "E:ss_1.raw");
saveimage(img1, w, h, "E:ss_2.raw");
delateimage(img);
delateimage(img1);
}
(7)c語言圖像識別演算法擴展閱讀
C語言實現一個圖片的讀出和寫入
#include <stdlib.h>
#include <windows.h>
int file_size(char* filename)//獲取文件名為filename的文件大小。
{
FILE *fp = fopen(filename, "rb");//打開文件。
int size;
if(fp == NULL) // 打開文件失敗
return -1;
fseek(fp, 0, SEEK_END);//定位文件指針到文件尾。
size=ftell(fp);//獲取文件指針偏移量,即文件大小。
fclose(fp);//關閉文件。
return size;
}
int main ()
{
int size=0;
size=file_size("qw");
printf("%d ",size);
FILE * pFile,*qw;
char *buffer=(char*)malloc(sizeof(char)*size);
qw =fopen("qw","r");
pFile = fopen ( "qwe" , "wb" );
printf("%d==
",pFile);
printf("%d ",size);
fread(buffer,1,size,qw);
fwrite (buffer , sizeof(byte), size , pFile );
fclose (pFile);
rename("qwe","Groot.jpg");
return 0;
}
8. 搞演算法(圖像識別,深度學習)必須要懂C/C++嗎
由於圖像識別、深度學習這方面已經有許多人做了基礎性工作,他們提供的程序或者庫都是利用c或c++形式提供的,或者是類似的調用介面,因此要利用這些庫、將這些基本演算法結合到自己的工程中來,需要c和c++的知識
演算法應當是可移植的,同時又不能離硬體太遠。可移植的特點是要求編程語言具備可移植性、通用性,c或c++是比較好的載體;所謂離硬體不太遠,是因為要在演算法優化方面有需求時,需要針對硬體特點,或者硬體提供的能力,做到發揮演算法的最大效能,由於c語言可以很好地結合匯編語言和高級語言,因此在優化方面是比較靈活的。
如果大部分通用演算法都是用c或c++編寫的,為成為通用演算法,你有可能需要順應這一習慣,以便別人將你的演算法結合到他們的c或c++工程中去。
往往你的演算法是在別人編寫的現有演算法上改進得到,如果別人的演算法就是c或c++編寫的,你需要這方面的知識來消化別人演算法的思路,理解成熟演算法的意圖。