編程圖片分析
㈠ C語言中怎麼編程在計算機屏幕上顯示如下圖案
如果實在普通LCD屏上顯示某個圖案,需要先將待顯示的圖案用專用軟體處理成圖像數據,然後封裝到一個數組里,然後編寫一個子函數將這些數據按順序寫到LCD緩沖區中即可。
如果是在PC機的顯示器上顯示該圖案,需要首先根據該圖片的格式(如jpeg,或BMP,或其它格式),進行分析,去除圖片格式頭,然後將圖片文件中的圖像數據(即像素點)提取出來,然後寫入顯示器的緩存中即可。
㈡ 圖形編程中都有哪些實用的工具
如果您是視覺學習者,您可能想知道視覺和聽覺信息是如何翻譯成計算機語言的,編程中的圖形方法將允許計算機處理二維或更多維度的空間表示。這種圖形化編程稱為可視化編程語言,它通過基於文本的語言來定義圖片。它經常用於工程系統設計,以將汽車發動機測試期間的事件和振動信息轉換為視覺讀數,Scratch、Arblock、mBlock 等工具很實用。
Arblock 是一種基於塊的圖形編程環境,用於創建 Arino 程序。Arblock 窗口分為兩個,左側是存儲您可以添加到草圖中的可能塊,右側的另一半是您可以繪制草圖的地方。要添加您的草圖,只需將其從 bin 拖到空白區域即可。但是,Arblock 草圖需要您對塊進行編程並找到控制箱。這個程序塊可以設置 Arino 程序的功能,然後您現在可以上傳您的繪圖並檢查您的上傳狀態。
mBlock 是基於 Scratch 2.0 的圖形化編程,界面美觀,用起來比較方便。mBlock是一款高兼容性軟體,用戶還可以使用mBlock對Makeblock電子模塊進行自定義腳本編程,mBlock 軟體具有 Arino Program 等最佳功能,可以設置數字引腳並將其輸出為高低電平。它非常適合初學者將圖形編程轉換為基於文本的編程,使用 mBlock 不需要其他應用程序的幫助。
㈢ 數控編程代碼 g71與g90分析一幅圖的區別
g90是單一型的固定循環指令,如g90x(u)—z(w)—f—
:其路徑是直線或斜線
g71是復合型的固定循環指令,如g71p—q—x—z—r—f—:其路徑可以是直線、斜線、圓弧
㈣ 編程 圖片差別分析用那個需要語言好些
1,可以使用matlab進行查找,
2,或者使用vs 使用c++,並使用opencv進行讀取圖片(用cv::mat),並將變為灰色的, 讀取裡面的每個色素點的大小,找到你說的位置的那幾個色素點,在其它幾幅圖片中找匹配的位置,就行了。
希望對你有用。
㈤ 51單片機電子鍾編程,三個按鈕分別控制小時分鍾和秒,有圖有分析
一點鼓勵都沒有,給一個程序供參考吧。
#include<reg51.h>
#defineucharunsignedchar
ucharcodeledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//0-9
unsignedcharsec=0,min=0,hour=12,scanled;
unsignedcharkey,flashbit,mode,time;
unsignedchardisdat[8];
sbitled=P1^0;
voiddelay(unsignedintx)
{
unsignedinti,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
voiddischg()
{
disdat[0]=sec%10;
disdat[1]=sec/10;
disdat[2]=10;
disdat[3]=min%10;
disdat[4]=min/10;
disdat[5]=10;
disdat[6]=hour%10;
disdat[7]=hour/10;
}
voidflash()
{
switch(flashbit)
{
case0:break;
case1:
disdat[6]=0x10;
disdat[7]=0x10;
delay(50);
dischg();
delay(80);
break;
case2:
disdat[3]=0x10;
disdat[4]=0x10;
delay(50);
dischg();
delay(80);
break;
case3:
disdat[0]=0x10;
disdat[1]=0x10;
delay(50);
dischg();
delay(80);
break;
default:break;
}
}
voidt0isr()interrupt1 //秒計時
{
TH0=0x3c;
TL0=0xb0;
time++;
switch(mode)
{
case0:
if(time==20)
{
time=0;
sec++;
if(sec>59)
{
sec=0;
min++;
if(min>59)
{
min=0;
hour++;
if(hour>23)hour=0;
}
}
}
break;
case1:
if(time==20)
{
time=0;
if(sec>0)sec--;
elseif(min>0){sec=59;min--;}
elseif(hour>0){sec=59;min=59;hour--;}
else{hour=0;min=0;sec=0;}
}
break;
}
dischg();
}
voidt1isr()interrupt3 //顯示
{
TH1=0xec;
TL1=0x78;
switch(scanled)
{
case0:
P2=0x01;
P0=~ledtab[disdat[7]];
break;
case1:
P2=0x02;
P0=~ledtab[disdat[6]];
break;
case2:
P2=0x04;
P0=~ledtab[disdat[5]];
break;
case3:
P2=0x08;
P0=~ledtab[disdat[4]];
break;
case4:
P2=0x10;
P0=~ledtab[disdat[3]];
break;
case5:
P2=0x20;
P0=~ledtab[disdat[2]];
break;
case6:
P2=0x40;
P0=~ledtab[disdat[1]];
break;
case7:
P2=0x80;
P0=~ledtab[disdat[0]];
break;
default:break;
}
scanled++;
scanled%=8;
}
main()
{
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
TH1=0xec;
TL1=0x78;
TR1=1;
TR0=1;
ET0=1;
ET1=1;
EA=1;
sec=55;
min=59;
hour=23;
flashbit=0;
scanled=0;
time=0;
mode=0;
dischg();
while(1)
{
flash();//閃爍
if((P3&0x0f)!=0x0f){
key=P3&0x0f;
while((P3&0x0f)!=0x0f);
led=0;
delay(10);
key|=0xf0;
switch(~key)
{
case0x01: //p3.1選擇調時、分、秒
TR0=0;
flashbit+=1;
if(flashbit>3){flashbit=0;TR0=1;}
break;
case0x02: //p3.2調數
if(flashbit==0)break;
if(flashbit==1)
{
hour++;
if(hour>99)hour=0;
}
if(flashbit==2)
{
min++;
if(min>59)min=0;
}
if(flashbit==3)
{
sec++;
if(sec>59)sec=0;
}
break;
case0x04: //選擇正/倒
TR0=0;
mode++;
mode&=0x01;
if(mode==0){sec=0;min=0;hour=0;}
dischg();
break;
case0x08: //啟動/暫停
TR0=~TR0;
break;
default:break;
}
}
}
}
㈥ 數控車床編程實例帶圖的
數控機床程序編制的方法有三種:即手工編程、自動編程和CAD/CAM。
1.手工編程
手工進行零件圖紙分析、加工、數值計算,編寫程序清單直到程序輸入和檢查。它適用於點加工或幾何形狀不太復雜的零件。但是,在編譯復雜的部分時,它非常耗時,而且很容易出錯。
2.自動編程
使用計算機或編程機,完成零件的編程過程,對於復雜零件是非常方便的。
3.CAD/CAM
利用CAD/CAM軟體實現了建模和圖像的自動編程。最典型的軟體是MasterCAM,可以完成銑削二坐標、三坐標、四坐標、五坐標、車削、線切割的編程。這類軟體雖然功能單一,但簡單易學,價格相對低廉,目前仍是中小企業的選擇。
(6)編程圖片分析擴展閱讀:
注意事項:
科學技術的發展導致了產品升級的加速和人們需求的多樣化,產品的生產也趨向於批量的多樣化和小型化。為了適應這一變化,數控(NC)設備在企業中越來越重要。
它與普通車床相比,一個顯著的優點是:對零件變化的適應性強,更換零件只需更改相應的程序,對刀具只需簡單的調整就能做出合格的零件,為節約成本贏得機會。
但是要充分發揮數控機床的作用,不僅要有良好的硬體,更重要的是軟體:編程,即根據不同零件的特點,編制出合理、高效的加工程序。通過多年的編程實踐和教學,我培養了一些編程技能。
雖然數控車床在加工靈活性上優於普通車床,但在單個零件的生產效率上與普通車床仍有一定差距。因此,提高數控車床的效率就成了關鍵,而合理運用編程技能,建立高效的加工程序,往往對提高機床的效率有意想不到的效果。
㈦ python圖像處理庫 哪個好 知乎
1.scikit-image
scikit-image是一個開源的Python包,適用於numpy數組。它實現了用於研究,教育和工業應用的演算法和實用工具。即使是那些剛接觸Python生態系統的人,它也是一個相當簡單直接的庫。此代碼是由活躍的志願者社區編寫的,具有高質量和同行評審的性質。
2.Numpy
Numpy是Python編程的核心庫之一,並為數組提供支持。圖像本質上是包含數據點像素的標准Numpy數組。因此,我們可以通過使用基本的NumPy操作,例如切片、掩膜和花式索引,來修改圖像的像素值。可以使用skimage載入圖像並使用matplotlib顯示圖像。
3.Scipy
scipy是Python的另一個類似Numpy的核心科學模塊,可用於基本的圖像操作和處理任務。特別是子模塊scipy.ndimage,提供了在n維NumPy數組上操作的函數。該包目前包括線性和非線性濾波,二值形態學,B樣條插值和對象測量等功能函數。
4. PIL/Pillow
PIL是Python編程語言的一個免費庫,它支持打開、操作和保存許多不同的文件格式的圖像。然而,隨著2009年的最後一次發布,它的開發停滯不前。但幸運的是還有Pillow,一個PIL積極開發的且更容易安裝的分支,它能運行在所有主要的操作系統,並支持Python3。這個庫包含了基本的圖像處理功能,包括點運算、使用一組內置卷積核的濾波和色彩空間的轉換。
5.OpenCV-Python
OpenCV是計算機視覺應用中應用最廣泛的庫之一
。OpenCV-Python是OpenCV的python版API。OpenCV-Python的優點不只有高效,這源於它的內部組成是用C/C++編寫的,而且它還容易編寫和部署。這使得它成為執行計算密集型計算機視覺程序的一個很好的選擇。
6.SimpleCV
SimpleCV也是一個用於構建計算機視覺應用程序的開源框架。有了它,你就可以訪問幾個高性能的計算機視覺庫,如OpenCV,而且不需要先學習了解位深度、文件格式、顏色空間等。它的學習曲線大大小於OpenCV,正如它們的口號所說「計算機視覺變得簡單」。
7.Mahotas
Mahotas是另一個計算機視覺和圖像處理的Python庫。它包括了傳統的圖像處理功能例如濾波和形態學操作以及更現代的計算機視覺功能用於特徵計算,包括興趣點檢測和局部描述符。該介面是Python語言,適合於快速開發,但是演算法是用C語言實現的,並根據速度進行了調優。Mahotas庫速度快,代碼簡潔,甚至具有最小的依賴性。
8.SimpleITK
ITK或者Insight Segmentation and Registration
Toolkit是一個開源的跨平台系統,為開發人員提供了一套廣泛的圖像分析軟體工具
。其中,SimpleITK是建立在ITK之上的簡化層,旨在促進其在快速原型設計、教育、解釋語言中的應用。SimpleITK是一個圖像分析工具包,包含大量支持一般過濾操作、圖像分割和匹配的組件。SimpleITK本身是用C++寫的,但是對於包括Python以內的大部分編程語言都是可用的。
9.pgmagick
pgmagick是GraphicsMagick庫的一個基於python的包裝。GraphicsMagick圖像處理系統有時被稱為圖像處理的瑞士軍刀。它提供了一個具有強大且高效的工具和庫集合,支持以88種主要格式讀取、寫入和操作圖像。
10.Pycairo
Pycairo是圖像處理庫cairo的一組Python捆綁。Cairo是一個用於繪制矢量圖形的2D圖形庫。矢量圖形很有趣,因為它們在調整大小或轉換時不會失去清晰度。Pycairo是cairo的一組綁定,可用於從Python調用cairo命令。
㈧ android編程:讀取指定文件夾下所有png圖片
1、程序,把Assets中的圖像顯示出來
try {
BufferedInputStream bis = new BufferedInputStream(getAssets()
.open("a.bmp"));
Bitmap bm = BitmapFactory.decodeStream(bis);
imageView01.setImageBitmap(bm);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("==========file not found======");
}
2、原理:Android中的資源分析
資源是Android應用程序中重要的組成部分。在應用程序中經常會使用字元串、菜單、圖像、聲音、視頻等內容,都可以稱之為資源。通過將資源放到與apk文件中與Android應用程序一同發布,在資源文件比較大的情況下,可以通過將資源作為外部文件來使用,我們將分析如何在Android應用程序中存儲這些資源。
一、資源的存儲
在android中,資源大多都是保存在res目錄中,例如布局資源以XML文件的形式保存在res\layout目錄中;圖像資源保存著res\drawable目錄中;菜單資源保存在res\menu目錄中。ADT在生成apk文件時,這些目錄中的資源都會被編譯,然後保存到apk文件中。如果將資源文件放到res\raw目錄中,資源將在不編譯的情況下放入apk文件中。在程序運行時可以使用InputStream來讀取res\raw目錄中的資源。
如果使用的資源文件過大,我們可以考慮將資源文件作為外部文件單獨發布。Android應用程序會從手機內存或者SD卡讀取這些資源文件。
二、資源的種類
從資源文件的類型來劃分,我們可以將資源文件劃分為XML、圖像和其它。以XML文件形式存儲的資源可以放在res目錄中的不同子目錄里,用來表示不同種類的資源;而圖像資源會放在res\drawable目錄中。除此之外,可以將任意的資源嵌入Androidy應用程序中。比如音頻和視頻等,一般這些資源放在res\raw目錄中。
表1、 Android支持的資源
目錄 資源類型 描述
Res\values
XML
保存字元串、顏色、尺寸、類型、主題等資源,可以是任意文件名。對於字元串、顏色、尺寸等信息採用
Key-value形式表示,對於類型、主題等資源,採用其它形式表示
Res\layout
XML
保存布局信息。一個資源文件表示一個View或ViewGroup的布局
Res\menu
XML
保存菜單資源。一個資源文件表示一個菜單(包括子菜單)
Res\anim
XML
保存與動畫相關的信息。可以定義幀(frame)動畫和補間(tween)動畫
Res\xml
XML
在該目錄的文件可以是任意類型的XML文件,這些XML文件可以在運行時被讀取。
Res\raw
任意類型
在該目錄中的文件雖然也會被封裝在apk文件中,但不會被編譯。在該目錄中可以放置任意類型的文件,例如,各種類型的文檔、音頻、視頻文件等
Res\drawable
圖像
該目錄中的文件可以是多種格式的圖像文件,例如,bmp、png、gif、jpg等。在該目錄中的圖像不需要解析度非常高,aapt工具會優化這個目錄中的圖像文件。如果想按字流讀取該目錄下的圖像文件,需要將圖像文件放在res\raw目錄中。
assets
任意類型
該目錄中的資源與res\raw中的資源一樣,也不會被編譯。但不同的是該目錄中的資源文件都不會生出資源ID
三、資源文件的命名
每一個資源文件或資源文件中的key-value對都會在ADT自動生成的R類(在R.java文件中)中找到相對應的ID.其中資源文件名或key-value對中的key就是R類中的java變數名。因此,資源文件名好key的命名首先要符合java變數的命名規則。
除了資源文件和key本身的命名要遵循相應的規則外,多個資源文件和key也要遵循唯一的原則。也就是說,同類資源的文件名或key不能重復。例如,兩個表示字元串資源的key不能重復,就算這兩個key在不同的XML文件中也不行。
由於ADT在生成ID時並不考慮資源文件的擴展名,因此,在res\drawable、res\raw等目錄中不能存在文件名相同,擴展名不同的資源文件。例如在res\drawable目錄不能同時放置icon.jpg和icon.png文件。
四、資源使用示例
在Android SDK中不僅提供了大量的系統資源,而且還允許開發人員定製自己的資源。不管是系統資源,還是自定義的資源,一般都會將這些資源放在res目錄中,然後通過R類中的相應ID來引用這些資源。接下來將針對於XML類資源的使用進行分析。
XML資源實際上就是XML格式的文本文件,這些文件必須放在res\xml目錄中。可以通過Resources.getXml方法獲得處理指定XML文件的XmlResourceParser對象。實際上,XmlResourceParser對象處理XML文件的的過程主要是針對不同的狀態點處理相應的代碼,比如開始分析文檔、開始分析標簽、分析標簽完成等,XmlResourceParser通過調用next方法不斷更新當前的狀態。
下面的代碼,則是展示如何讀取res\xml目錄中的XML文件的內容,先在res\xml目錄中建立一個xml文件。將AndroidManifest.xml文件復制到res\xml目錄中,並改名為android.xml。
在准備完XML文件後,在onCreate方法中開始讀取XML文件的內容,代碼如下:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView textView=(TextView)findViewById(R.id.textview);
StringBuffer sb=new StringBuffer();
// 獲得處理android。xml文件的XmlResourceParser對象
XmlResourceParser xml=getResources().getXml(R.xml.android);
try
{
//切換到下一個狀態,並獲得當前狀態的類型
int eventType =xml.next();
while(true)
{
//文檔開始狀態
if(eventType == XmlPullParser.START_DOCUMENT)
{
Log.d("start_document","start_document");
}
//標簽開始狀態
else if(eventType ==XmlPullParser.START_TAG)
{
Log.d("start_tag",xml.getName());
//將標簽名稱和當前標簽的深度(根節點的depth是1,第2層節點的depth是2,類推)
sb.append(xml.getName()+"(depth:"+xml.getDepth()" ");
//獲得當前標簽的屬性個數
int count=xml.getAttributeCount();
//將所有屬性的名稱和屬性值添加到StringBuffer對象中
for(int i=0;i<count;i++)
{
sb.append(xml.getAttributeName(i)+":
"+xml.getAttributeValue(i)+"");
}
sb.append(")\n");
}
//標簽結束狀態
else if(eventType ==XmlPullParser.END_TAG)
{
Log.d("end_tag",xml.getName());
}
//讀取標簽內容狀態
else if(eventType ==XmlPullParser.TEXT)
{
Log.d("text","text");
}
//文檔結束狀態
else if(eventType ==XmlPullParser.END_DOCUMENT)
{
Log.d("end_document","end_document");
//文檔分析結束後,退出while循環
break;
}
//切換到下一個狀態,並獲得當前狀態的類型
eventType =xml.next();
}
textView.setText(sb.toString());
}
catch(Exception e) {}
}
二、如果想讀入文件
在使用getAssets().open("anhui.xml")返回輸人流之後,就可以以此為參數,後面的處理跟普通的java的處理相同。
㈨ 數控車床編程求助.帶圖
數控機床程序編制的方法有三種:即手工編程、自動編程和CAD/CAM。
1.手工編程
手工進行零件圖紙分析、加工、數值計算,編寫程序清單直到程序輸入和檢查。它適用於點加工或幾何形狀不太復雜的零件。但是,在編譯復雜的部分時,它非常耗時,而且很容易出錯。
2.自動編程
使用計算機或編程機,完成零件的編程過程,對於復雜零件是非常方便的。
3.CAD/CAM
利用CAD/CAM軟體實現了建模和圖像的自動編程。最典型的軟體是MasterCAM,可以完成銑削二坐標、三坐標、四坐標、五坐標、車削、線切割的編程。這類軟體雖然功能單一,但簡單易學,價格相對低廉,目前仍是中小企業的選擇。
(9)編程圖片分析擴展閱讀:
注意事項:
科學技術的發展導致了產品升級的加速和人們需求的多樣化,產品的生產也趨向於批量的多樣化和小型化。為了適應這一變化,數控(NC)設備在企業中越來越重要。
它與普通車床相比,一個顯著的優點是:對零件變化的適應性強,更換零件只需更改相應的程序,對刀具只需簡單的調整就能做出合格的零件,為節約成本贏得機會。
但是要充分發揮數控機床的作用,不僅要有良好的硬體,更重要的是軟體:編程,即根據不同零件的特點,編制出合理、高效的加工程序。通過多年的編程實踐和教學,我培養了一些編程技能。
雖然數控車床在加工靈活性上優於普通車床,但在單個零件的生產效率上與普通車床仍有一定差距。因此,提高數控車床的效率就成了關鍵,而合理運用編程技能,建立高效的加工程序,往往對提高機床的效率有意想不到的效果。
㈩ 數控車床編程實例帶圖的
G99(每轉進給)
G0 X200 Z100(快速移動到安全位)
T0101(換1號外圓刀,執行1號刀補)
M03 S500(開啟主軸正轉,速度500R/MIN)
G0 X112 Z2(快速接近工件毛坯)
G71 U3 R0.5 F0.2(G71軸向精車循環加工,U3每次吃刀3MM單邊,退刀0.5MM,速度0.2MM/R)
G71 P1 Q2 U0 W0(P1程序開始階段,Q2程序結束階段,U0——X軸不留精加工餘量,W0——Z軸不留精加工餘量)
N1 G0 X30(循環開始以後的第一階段)
G1 Z-50
X90
Z-70
X110
N2 Z-140(循環結束的最後一階段)
G0 X200 Z100(快速移動至安全換刀位)
T0202(換2號刀螺牙刀,執行2號刀補)
G0 X200 Z100 S300(快速移動至安全位,轉速改為300R/MIN)
X30 Z4(快速定位至螺牙循環開始位置)
G92 X29.8 Z-48 F1.5(車螺牙,X軸牙底徑29.8,Z牙長48MM,牙距1.5MM)
X29.6
X29.4
X29.2
X29
X28.8
X28.6
X28.4
X28.3
X28.2
X28.1
X28.05
G0 X200 Z100(快速移動至安全換刀位置)
T0303(換3號割刀,執行3號刀補)
G0 X200 Z100 S200(快速定位,轉速200R/MIN)
X110 Z-84(移動至割槽循環開始位置)
G75 R0.5 F0.08(G75割槽循環,R——每次退刀0.5MM,F——每轉進給0.08MM)
G75 X60 Z-120 P6000 Q4000(槽底徑60MM,Z軸最大深度120MM,P——每次切入6MM,Z軸移動量)
M09(關水泵)
G0 X200 Z100 M05(快速移動至換刀安全位,關閉主軸)
T0101(換1號刀)
M30(程序結束)