導航:首頁 > 源碼編譯 > c語言能編譯圖像

c語言能編譯圖像

發布時間:2023-02-15 13:47:49

A. 圖像處理python和c語言哪個好

p是腳本語言,c是編譯語言,p對於c多了一個位元組碼轉機器碼過程,運行速度c高。
p是用c寫的。p有強大第三方庫支持,所以開發成本周期都比c少。
所以就學習而言,c要學好。
就開發而言,不光圖像處理,包括其他領域,一般不是非常底層不會用c,都會用相應的高級語言,要的是開發效率。
所以,單純做圖像處理相關開發,用p較好。

B. 如何在linux下編寫C語言圖像程序

1.進入字元界面

2.創建文件夾用於存放源文件

mkdir helloworld //創建文件夾命令

cd helloworld //進入新建的文件夾,這里應該說目錄比較好,windows用習慣了

vim main.c //打開vim並創建main.c文件

//按 i 鍵進入編輯狀態,以下是程序

#include

int main()

{

printf("Hello world!/n");

return 0;

}

按Esc進入命令模式,按 ZZ 保存退出

gcc main.c //編譯

./a.out //運行,默認情況生成a.out可執行文件

雖然本程序很簡單,但包含了在Linux上編程的基本思想,當看到熟悉的結果時,還是小得意了一下。

嘻嘻……

C. C語言圖形編譯

獨立圖形運行程序的建立
Turbo C對於用initgraph()函數直接進行的圖形初始化程序, 在編譯和鏈接
時並沒有將相應的驅動程序(*.BGI)裝入到執行程序, 當程序進行到intitgraph()
語句時, 再從該函數中第三個形式參數char *path中所規定的路徑中去找相應的
驅動程序。若沒有驅動程序, 則在C:\TC中去找, 如C:\TC中仍沒有或TC不存在,
將會出現錯誤:
BGI Error: Graphics not initialized (use 'initgraph')
因此, 為了使用方便, 應該建立一個不需要驅動程序就能獨立運行的可執行
圖形程序,Turbo C中規定用下述步驟(這里以EGA、VGA顯示器為例):
1. 在C:\TC子目錄下輸入命令:BGIOBJ EGAVGA
此命令將驅動程序EGAVGA.BGI轉換成EGAVGA.OBJ的目標文件。
2. 在C:\TC子目錄下輸入命令:TLIB LIB\GRAPHICS.LIB+EGAVGA
此命令的意思是將EGAVGA.OBJ的目標模塊裝到GRAPHICS.LIB庫文件中。
3. 在程序中initgraph()函數調用之前加上一句:
registerbgidriver(EGAVGA_driver):

D. 用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.結論:有交集關系則為部分包含,有子集關系則有完全包含。

起始坐標比較好計算,即開始數據串的位置數,分解成大圖的行列數。

E. 請問高手:有哪些C語言編譯器可以做圖形程序(非VC)

現在主流的,基於PC的C語言編譯器都支持圖形程序,其自帶的函數庫中通常會提供一些基本的圖形函數。但有一點切記:C是基於Dos模式的開發工具,其內置的函數無論多麼豐富,多麼強大,都不可能實現Windows或其它環境下的高解析度和顏色位數,目前C環境下能達到的解析度最高為640*480,色深最高為8位,即256種顏色,經本人測試,其顏色定義與Windows環境下的8位顏色定義有重大區別,所以在C環境下目前還不可能實現VC等開發環境所提供的強大的圖形處理模塊。

F. 純C語言實現圖像處理

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define ONE 255
#define ZERO 0
/*
typedef struct tagBITMAPFILEHEADER { // bmfh
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER;
typedef struct tagBITMAPINFOHEADER{ // bmih
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER;
*/
void main (int argc,char *argv[])
{
FILE *fi,*fo;//I/O file
char fin[80],fon[80];//I/O file name
unsigned char **ri,**ro;
unsigned char buff;
long w,h;
int t;
int i,j;
if(argc<3)
{
printf("orginfile name:");
scanf("%s",fin);
printf("resultfile name:");
scanf("%s",fon);
}else{
sscanf(argv[1],"%s",fin);
sscanf(argv[2],"%s",fon);
}
if(argc==4)
sscanf(argv[4],"%d",&t);
else{
printf("theshold [0,255]:");
scanf("%d",&t);
}

if (((fi=fopen(fin,"rb"))==NULL)||((fo=fopen(fon,"wb"))==NULL))
{
puts("\nfile open failed");
return;
}

fseek(fi,18L,SEEK_SET);
fread(&w,sizeof(long),1,fi);
fread(&h,sizeof(long),1,fi);

fseek(fi,0L,SEEK_SET);

ri=(unsigned char **)malloc(sizeof(unsigned *)*h);
for (i=0;i<h;i++)
*(ri+i)=(unsigned char *)malloc(sizeof(unsigned)*w);

ro=(unsigned char **)malloc(sizeof(unsigned *)*h);
for (i=0;i<h;i++)
*(ro+i)=(unsigned char *)malloc(sizeof(unsigned)*w);
//分配失敗後果自負!

for (i=0;i<32;i++){
fread(&buff,sizeof(buff),1,fi);
fwrite(&buff,sizeof(buff),1,fo);}
for (i=0;i<h;i++)
for (j=0;j<w;j++)
fread(*(ri+i)+j,sizeof(unsigned char),1,fi);

for (i=0;i<h;i++)
for (j=0;j<w;j++)
*(*(ro+i)+j)=((*(*(ri+i)+j)<=t)?ZERO:ONE);
for (i=0;i<h;i++)
for (j=0;j<w;j++)
fwrite(*(ro+i)+j,sizeof(unsigned char),1,fo);
fclose(fo);
}

G. c語言的圖像編譯過程不顯

結尾最後一個大括弧之前加上:
getch();
return 0;
試試。

H. C語言要在什麼編譯工具下才能編出有圖形界面的程序

樓主,我是否可以把你的問題這樣想:
你編寫了一個圖形界面,然後想調用滑鼠操作是不是。
如果是這樣的話,我可以給你幾點參考意見(我是在win-TC下面運行)
首先,你要調用dos中斷,從寄存器裡面提取數據.
然後,利用圖形繪制,畫出圖形(頭文件在#include"graphics.h")
其次,要想通過滑鼠實現功能,要自己編程實現。c語言沒有現成的工具
最後,我留下我的Q942690451 驗證為 網路滑鼠 。如果有什麽問題的話,我們可以以前探討
希望對你有幫助

I. 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);
}

J. c語言如何編譯才能輸出以下圖形

第一題,首先按行數循環,每一行內再循環,如果當前列號等於行號或者是該行最後一列,列印行號,否則列印空格即可

閱讀全文

與c語言能編譯圖像相關的資料

熱點內容
c編譯器使用說明 瀏覽:703
鄭州前端程序員私活有風險嗎 瀏覽:10
小型螺桿機壓縮機 瀏覽:516
成人解壓最好的方法 瀏覽:48
最小製冷壓縮機 瀏覽:488
xampp支持python 瀏覽:367
深圳周立功單片機 瀏覽:56
圓上點與點之間角度演算法 瀏覽:863
怎麼知道微信關聯了哪些app 瀏覽:696
android事件驅動 瀏覽:882
簽約大屏系統源碼 瀏覽:806
安卓系統怎麼轉入平板 瀏覽:425
安卓手機相機怎麼提取文字 瀏覽:219
如何查看伺服器映射的外網地址 瀏覽:985
圖片刺綉演算法 瀏覽:675
阿里雲伺服器沒有實例 瀏覽:605
綿陽有沒有什麼app 瀏覽:848
怎麼用游俠映射伺服器 瀏覽:921
為什麼無意下載的app無法刪除 瀏覽:306
word2007打開pdf 瀏覽:118