當前位置:首頁 » 編程語言 » c語言圖像處理入門
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言圖像處理入門

發布時間: 2022-07-22 17:42:49

⑴ 純c語言實現圖像處理

這個不難吧?雖然我不用c,可是說下怎麼做,首先打開一個BMP文件,然後按照bmp格式解析到一個數組中,接著進行二值化(這個有很多方法),最後將數組中的數據寫入一個新的BMP文件就可以了。

⑵ c語言處理圖像文件

opencv做圖像處理比較專業,用純C語言的話處理bmp圖像比較方便,因為信息是直接按位元組存儲的,其他格式因為有壓縮的問題,比較麻煩,我以前寫過一個處理bmp的程序,如果你要的話可以網路hi聯系我,或者留下郵箱發給你。

⑶ C語言數字圖像處理是要做些什麼

這個跟你用的語言沒有關系,無論你使用C也好Matlab也好都是為了圖像處理這個目標。
圖像處理其實很龐雜,包括灰度處理、彩色處理、形態學處理等等。

⑷ c語言圖像處理

c語言不自帶圖形處理方面的東西。TC特有的頭文件graphics.h,其他編譯環境都用不了,可移植性是零。而且TC實在太老,與現在c語言標准差距非常大。基本是無法運行現在的代碼。所以不太建議你用它。

非要用純c,可以自己寫函數調用WindowsAP和GUI介面。而且需要包含windows.h頭文件。

網上有個大神用c—free寫的代碼在附件里。

/*
純C通過WindowsAPI編寫的基本Windows圖形界面
整理加原創,基本上每一句代碼都有注釋
通過C-Free3.5編譯
*/

#include<string.h>//這個頭文件在擴展名為.c時是不需要加的
#include<windows.h>//windowsapi必須包含的頭文件

LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);//窗口函數的前向聲明

//參數說明:
//HINSTANCEhInstance當前實例句柄
//HINSTANCEhPrevInstance以前版本的遺留產物,現在總是置為NULL
//LPSTRlpCmdLine命令行的產生,可以從開始->獲得程序運行的參數,由此傳入
//intnCmdShow程序最初的顯示模式,正常,最大化或最小化

//主函數的入口是WinMain,類型為int
//WINAPI標志是一種特定的調用,它定義了一種生成機器代碼和放置函數參數的方式

intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpcmdLine,intnCmdShow)
{
//TCHAR,TEXT都是統一單位元組和雙位元組字元的類型,建議使用
staticTCHARszAppName[]=TEXT("MyFirstWindows");
staticTCHARszClassName[]=TEXT("MFWClass");
HWNDhwnd;//一定一個窗口句柄
MSGmsg;//定義一個消息結構體
WNDCLASSwndclass;//定義一個WNDCLASS結構用於注冊窗口

wndclass.style=CS_HREDRAW|CS_VREDRAW;//窗口類的類風格,每當水平和垂直大小改變時完全刷新窗口
wndclass.lpfnWndProc=WndProc;//此窗口類所使用的窗口函數的入口地址
wndclass.cbClsExtra=0;//用於在類結構中預留一些額外的空間
wndclass.cbWndExtra=0;//用於在windows內部保存的窗口結構中預留一些額外的空間
wndclass.hInstance=hInstance;//指定所在程序的實例句柄
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//定製圖標
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);//定製滑鼠圖形
wndclass.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH);//定義背景顏色
wndclass.lpszMenuName=NULL;//指定窗口類的菜單
wndclass.lpszClassName=szClassName;//指定窗口類的類名


//注冊窗口,參數為指向WNDCLASS結構的指針
//如果注冊不成功,則彈出一個對話框說明情況
//MessageBox是僅有的可以在舊版本和新版本windows都可以運行的對話框

if(!RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT("!"),szAppName,MB_ICONERROR);
return0;
}

//創建窗口
hwnd=CreateWindow(
szClassName,//窗口類的名稱
TEXT("Title:MyFirstWindowsProgram.這里是標題"),//窗口標題
//WS_OVERLAPPEDWINDOW,//窗口顯示風格,這行實際是一個預定義,相當於下面的集合,可以單獨設置
WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX,
CW_USEDEFAULT,//初始x方向的位置
CW_USEDEFAULT,//初始y方向的位置
CW_USEDEFAULT,//初始x方向的大小
CW_USEDEFAULT,//初始y方向的大小
NULL,//父窗口句柄
NULL,//菜單句柄
hInstance,//程序實例句柄
NULL);//創建參數


//顯示窗口,第一個參數hwnd是CreateWindow所創建的窗口的句柄
//第二個參數nCmdShow是主函數給的,由快捷方式獲得
ShowWindow(hwnd,nCmdShow);

//刷新窗口,給窗口函數,在本程序中即WndProc發送一個WM_PAINT
UpdateWindow(hwnd);

//消息循環
while(GetMessage(&msg,NULL,0,0))//接受自己創建的所有窗口的所有消息
{
TranslateMessage(&msg);//將msg結構體傳給windows以進行一些鍵盤轉換,即將擊鍵消息轉換為字元消息
DispatchMessage(&msg);//再次將msg結構體傳給windows,由windows將該消息發送給適當的窗口函數
}

return(int)msg.wParam;
}

//窗口函數
//參數說明:
//HWNDhwnd,接受消息的窗口句柄,由CreateWindow函數返回
//UINTmessage,消息標志符,用以標識消息,每個消息均有一個唯一對應的消息標識符
//WPARAMwParam,是WORDPARAM的意思,一個32位的消息參數,其含義和數值根據消息的不同而不同
//LPARAMlParam,是LONGPARAM的意思,一個32位的消息參數,其值和消息有關

//CALLBACK函數指由程序員定義,編程實現,而由windows系統調用的函數
LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam)
{
HDChdc;//定義一個設備描述表句柄結構體

//定義一個PAINTSTRUCT的繪制信息結構體,
//其包含了包含了當前無效矩形區域的坐標和其他信息,用於刷新用戶區的內容
PAINTSTRUCTps;

RECTrect;//定義一個RECT結構體,其有left,top,right,bottom四個域

//處理傳進的各種消息
switch(message)
{
//窗口創建
caseWM_CREATE:MessageBox(NULL,"MessageContent:ThisisWM_CREATE,這是WM_CREATE。",
"MessageTiTle這是對話框的標題",MB_OK);
return0;

//窗口繪制
caseWM_PAINT:hdc=BeginPaint(hwnd,&ps);//由BeginPaint開始,返回設備描述表以開始繪圖
GetClientRect(hwnd,&rect);//獲取用戶區域的大小

//格式話文本輸出
DrawText(hdc,TEXT("WindowsContent:Iamadeveloper.我為計算機而生。"),
-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
EndPaint(hwnd,&ps);//以EndPaint結束,釋放設備描述表句柄
return0;
//窗口消亡
caseWM_DESTROY:MessageBox(NULL,"MessageContent:ThisisWM_DESTROY,這是WM_DESTROY。",
"MessageTiTle這是對話框的標題",MB_OK);
PostQuitMessage(0);
return0;
}

//凡是窗口函數不予處理的消息應交由windows默認消息處理函數DefWindowProc處理
returnDefWindowProc(hwnd,message,wParam,lParam);
}

⑸ 學習圖像處理。VC++,入門 。我看了很多類似的書,書上代碼都有 ,但是我不會用。

呂鳳軍讀博的時候寫的一本書吧,叫數字圖像處理編程入門
很薄的,講C語言用win32 api進行簡單圖像處理

你要是學過圖像處理或者數學比較好,那還是先弄mfc吧,主要就是doc/view架構和gdi、點陣圖的那幾個類和api
如果不會圖像處理,和mfc一塊學就有點挑戰性了
請參考

⑹ 求推薦c語言處理圖像的相關書籍

不管什麼方向,編程都是基礎,首先你C語言要學好,基礎打好,圖像方面其實C語言本身就包含很多相關的函數,運用就能處理,我是這個專業的,主要的編程就是C語言,我有些心得,xx242xx5979960xxx,數字可找我,權當交朋友

⑺ C語言中,圖像處理函數的使用

Tc中用initgraph()函數可以切換到圖形模式,用closegraph()可以從圖形模式切換回字元模式。

initgraph()和closegraph()都是圖形函數,使用圖形函數必須包括頭文件"graphics.h"。

void far i nitgraph(int far *graphdriver, int far *graphmode,char far *pathtodriver);

graphdriver是指向圖形驅動序號變數的指針,
graphmode是在graphdriver選定後,指向圖形顯示模式序號變數的指針,
pathtodriver表示存放圖形驅動文件的路徑。
圖形驅動序號不同,圖形驅動文件也不同。序號為VGA圖形驅動對應"egavga.bgi"這個圖形驅動文件。
"egavga.bgi"一般在 Tc目錄下

例如:
-------
#include <graphics.h>

int Drive,Mode=DETECT;
initgraph(&Drive,&Mode,""); //圖形顯示器、顯示模式、路徑自動檢測

運行時需要在當前目錄下存在 EGAVGA.BGI文件
在TC\BGI目錄底下

-------
如果編譯後的.exe文件在另外一個目錄(如編譯後的.exe文件在D:\MyTc 目錄下,而編譯器的程序和.BGI文件在C:\Turboc\bin 目錄下,則需要填上BGI文件的路徑
例如:
initgraph(&Drive,&Mode,"C:\\Turboc\\bgi");

⑻ 基於C語言的 數字圖像處理 有什麼經典教材需要注意什麼

數字圖像處理教材一般偏重於演算法,很少有直接和C語言相關給出編程範例的。強烈建議選用一本經典教材,如岡薩雷斯的,外加幾本側重於編程的書,如VC++數字圖像處理等,國內有許多版本,結合起來進行。如果感到吃力可先看教材,把基本概念和常用演算法弄清楚了再上手編程,可以先使用MATLAB達到這個目的,經典教材依然是岡薩雷斯那本,國內也有很多這方面的書,圖書館借就可以。有了基礎後上手編程強烈建議使用OpenCV,國內最權威的網站:www.opencv.org.cn,網頁上的兩本教材都是很不錯的參考資料。

基於C語言的,有一本老書很不錯:呂鳳軍 《數字圖像處理編程入門》,網路吧,資料挺多。

最後啰嗦一句:路漫漫其修遠兮,不要妄想短期內有所突破,除非你基礎特別好。

⑼ c語言,簡易圖像編程處理

看工具是什麼。甚至具體需求是什麼。
GDI/DX/OPENGL都可以在像素RGB值上直接處理。
等於做離屏渲染。
也可以利用游戲引擎現有的工具庫直接實現這些逗比效果。

⑽ 數字圖像處理 有什麼好的入門的比較詳細的書么

鏈接:

提取碼:emat

圖像處理實際上就是數字圖像處理,是把真實世界中的連續三維隨機信號投影到感測器的二維平面上,采樣並量化後得到二維矩陣。數字圖像處理就是二維矩陣的處理,而從二維圖像中恢復出三維場景就是計算機視覺的主要任務之一。這裡面就涉及到了圖像處理所涉及到的三個重要屬性:連續性,二維矩陣,隨機性。所對應的數學知識是高等數學(微積分),線性代數(矩陣論),概率論和隨機過程。