中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

java網(wǎng)站開發(fā)實(shí)例視頻教程朋友圈廣告代理商官網(wǎng)

java網(wǎng)站開發(fā)實(shí)例視頻教程,朋友圈廣告代理商官網(wǎng),網(wǎng)站開發(fā)平臺(tái) eclipse,接到了給政府做網(wǎng)站工業(yè)相機(jī)如何實(shí)現(xiàn)實(shí)時(shí)和本地Raw圖像和Bitmap圖像的保存和相互轉(zhuǎn)換(C#代碼,UI界面版) 工業(yè)相機(jī)圖像格式工業(yè)相機(jī)實(shí)現(xiàn)Raw圖像和Bitmap圖像的保存和轉(zhuǎn)換的技術(shù)背景在相機(jī)SDK中獲取圖像轉(zhuǎn)換圖像的代碼分析工業(yè)相機(jī)回調(diào)函數(shù)里保存Bitmap圖像數(shù)據(jù)工…

在這里插入圖片描述

工業(yè)相機(jī)如何實(shí)現(xiàn)實(shí)時(shí)和本地Raw圖像和Bitmap圖像的保存和相互轉(zhuǎn)換(C#代碼,UI界面版)

  • 工業(yè)相機(jī)圖像格式
  • 工業(yè)相機(jī)實(shí)現(xiàn)Raw圖像和Bitmap圖像的保存和轉(zhuǎn)換的技術(shù)背景
  • 在相機(jī)SDK中獲取圖像轉(zhuǎn)換圖像的代碼分析
    • 工業(yè)相機(jī)回調(diào)函數(shù)里保存Bitmap圖像數(shù)據(jù)
    • 工業(yè)相機(jī)圖像轉(zhuǎn)換Bitmap圖像格式重要核心代碼
    • 工業(yè)相機(jī)回調(diào)函數(shù)里保存Raw圖像數(shù)據(jù)
    • 工業(yè)相機(jī)圖像轉(zhuǎn)換Raw圖像格式重要核心代碼
    • 代碼實(shí)現(xiàn)演示(保存Raw圖像)
    • 代碼實(shí)現(xiàn)演示(保存Bmp圖像)
    • 代碼實(shí)現(xiàn)演示(Bitmap圖像轉(zhuǎn)換為Raw圖像)
    • 代碼實(shí)現(xiàn)演示(本地Raw圖像轉(zhuǎn)換為Bitmap圖像)
    • 代碼實(shí)現(xiàn)演示(本地Bitmap圖像轉(zhuǎn)換為Raw圖像)
  • 源碼下載鏈接
  • 源碼下載鏈接
  • Baumer工業(yè)相機(jī)通過SDK實(shí)現(xiàn)Raw格式的圖像保存的行業(yè)應(yīng)用

?

工業(yè)相機(jī)圖像格式

工業(yè)相機(jī)RAW文件是一種記錄了工業(yè)相機(jī)傳感器的原始信息,同時(shí)記錄了由相機(jī)拍攝所產(chǎn)生的一些原數(shù)據(jù)(Metadata,如ISO的設(shè)置、快門速度、光圈值、白平衡等)的文件。RAW是未經(jīng)處理、也未經(jīng)壓縮的格式,可以把RAW概念化為“原始圖像編碼數(shù)據(jù)”。
?
工業(yè)相機(jī)Bitmap圖像是一種無損的圖像格式,它將圖像存儲(chǔ)為像素陣列,并可包含調(diào)色板信息。這種格式通常用于工業(yè)應(yīng)用中,因?yàn)樗軌虮A魣D像的細(xì)節(jié)和質(zhì)量,并且易于處理和分析。

本文以Baumer工業(yè)相機(jī)作為案例進(jìn)行演示,實(shí)現(xiàn)將工業(yè)相機(jī)的圖像轉(zhuǎn)換為Raw圖像并進(jìn)行保存到本地,轉(zhuǎn)換Raw圖像為Bitmap圖像,再從Bitmap圖像轉(zhuǎn)換為Raw圖像等操作。

工業(yè)相機(jī)實(shí)現(xiàn)Raw圖像和Bitmap圖像的保存和轉(zhuǎn)換的技術(shù)背景

本文通過C#中實(shí)現(xiàn)一個(gè)簡單的UI界面,用于將Raw圖像轉(zhuǎn)換為Bitmap圖像并進(jìn)行保存。

用戶可以通過該界面執(zhí)行以下操作:

  1. 轉(zhuǎn)換Raw圖像為Bitmap圖像:用戶可通過指定的操作步驟和可能的參數(shù),將從工業(yè)相機(jī)獲取的Raw圖像數(shù)據(jù)轉(zhuǎn)換為可處理的Bitmap格式。

  2. 轉(zhuǎn)換Bitmap圖像為Raw圖像:用戶有能力將轉(zhuǎn)換后的Bitmap圖像轉(zhuǎn)換為Raw圖像保存到指定的文件路徑,以備后續(xù)分析或使用。

通過這個(gè)UI界面,用戶能夠在實(shí)時(shí)應(yīng)用機(jī)器視覺數(shù)據(jù)處理時(shí)快速有效地進(jìn)行操作,無需深入了解圖像數(shù)據(jù)的底層處理過程。這個(gè)簡單的介紹旨在為開發(fā)人員提供一個(gè)明確的方向,以便開始構(gòu)建此類應(yīng)用程序,并且該程序主要用于演示目的。

在相機(jī)SDK中獲取圖像轉(zhuǎn)換圖像的代碼分析

本文介紹使用Baumer工業(yè)相機(jī),實(shí)現(xiàn)將圖像轉(zhuǎn)換為Raw圖像并進(jìn)行保存到本地,轉(zhuǎn)換Raw圖像為Bitmap圖像,再從Bitmap圖像轉(zhuǎn)換為Raw圖像等操作

工業(yè)相機(jī)回調(diào)函數(shù)里保存Bitmap圖像數(shù)據(jù)

C#環(huán)境下在回調(diào)函數(shù)里保存Bitmap圖像代碼如下所示:

void mDataStream_NewBufferEvent(object sender, BGAPI2.Events.NewBufferEventArgs mDSEvent)
{try{BGAPI2.Buffer mBufferFilled = null;              mBufferFilled = mDSEvent.BufferObj;if (mBufferFilled == null){MessageBox.Show("Error: Buffer Timeout after 1000 ms!");}else if (mBufferFilled.IsIncomplete == true){          mBufferFilled.QueueBuffer();}else{//將相機(jī)內(nèi)部圖像內(nèi)存數(shù)據(jù)轉(zhuǎn)為bitmap數(shù)據(jù)System.Drawing.Bitmap bitmap  = new System.Drawing.Bitmap((int)mBufferFilled.Width, (int)mBufferFilled.Height, (int)mBufferFilled.Width,System.Drawing.Imaging.PixelFormat.Format8bppIndexed, (IntPtr)((ulong)mBufferFilled.MemPtr + mBufferFilled.ImageOffset));#region//Mono圖像數(shù)據(jù)轉(zhuǎn)換。彩色圖像數(shù)據(jù)轉(zhuǎn)換于此不同System.Drawing.Imaging.ColorPalette palette = bitmap.Palette;int nColors = 256;for (int ix = 0; ix < nColors; ix++){uint Alpha = 0xFF;uint Intensity = (uint)(ix * 0xFF / (nColors - 1));palette.Entries[ix] = System.Drawing.Color.FromArgb((int)Alpha, (int)Intensity, (int)Intensity, (int)Intensity);}bitmap.Palette = palette;#endregion//回調(diào)函數(shù)保存圖像功能if (bSaveImg){//使用bitmap自帶函數(shù)保存string strtime = DateTime.Now.ToString("yyyyMMddhhmmssfff");string saveimagepath = pImgFileDir + "\\" + strtime + ".jpg";//bitmap.Save(saveimagepath, System.Drawing.Imaging.ImageFormat.Bmp);         bSaveImg = false;//變量控制單次保存圖像}#region//bitmap的圖像數(shù)據(jù)復(fù)制pBitmapBitmap clonebitmap = (Bitmap)bitmap.Clone();BitmapData data = clonebitmap.LockBits(new Rectangle(0, 0, clonebitmap.Width, clonebitmap.Height), ImageLockMode.ReadOnly, clonebitmap.PixelFormat);clonebitmap.UnlockBits(data);pBitmap = clonebitmap;#endregion#region//將pBitmap圖像數(shù)據(jù)顯示在UI界面PictureBox控件上prcSource.X = 0;prcSource.Y = 0;prcSource.Width = (int)mBufferFilled.Width;prcSource.Height = (int)mBufferFilled.Height;System.Drawing.Graphics graph = System.Drawing.Graphics.FromHwnd(pictureBoxA.Handle);graph.DrawImage(pBitmap, prcPBox, prcSource, GraphicsUnit.Pixel);#endregionclonebitmap.Dispose(); //清除臨時(shí)變量clonebitmap所占內(nèi)存空間mBufferFilled.QueueBuffer();}}catch (BGAPI2.Exceptions.IException ex){{string str2;str2 = string.Format("ExceptionType:{0}! ErrorDescription:{1} in function:{2}", ex.GetType(), ex.GetErrorDescription(), ex.GetFunctionName());MessageBox.Show(str2);}}return;
}
}

工業(yè)相機(jī)圖像轉(zhuǎn)換Bitmap圖像格式重要核心代碼

//將相機(jī)內(nèi)部圖像內(nèi)存數(shù)據(jù)轉(zhuǎn)為bitmap數(shù)據(jù)
System.Drawing.Bitmap bitmap  = new System.Drawing.Bitmap((int)mBufferFilled.Width, (int)mBufferFilled.Height,(int)mBufferFilled.Width,System.Drawing.Imaging.PixelFormat.Format8bppIndexed, (IntPtr)((ulong)mBufferFilled.MemPtr + mBufferFilled.ImageOffset));#region//Mono圖像數(shù)據(jù)轉(zhuǎn)換。彩色圖像數(shù)據(jù)轉(zhuǎn)換于此不同
System.Drawing.Imaging.ColorPalette palette = bitmap.Palette;
int nColors = 256;
for (int ix = 0; ix < nColors; ix++)
{uint Alpha = 0xFF;uint Intensity = (uint)(ix * 0xFF / (nColors - 1));palette.Entries[ix] = System.Drawing.Color.FromArgb((int)Alpha, (int)Intensity,(int)Intensity, (int)Intensity);
}
bitmap.Palette = palette;
#endregionstring strtime = DateTime.Now.ToString("yyyyMMddhhmmssfff");
string saveimagepath = pImgFileDir + "\\" + strtime + ".brw";//使用Bitmap格式保存         
bitmap.Save(saveimagepath, System.Drawing.Imaging.ImageFormat.Bmp);  

工業(yè)相機(jī)回調(diào)函數(shù)里保存Raw圖像數(shù)據(jù)

C#環(huán)境下在回調(diào)函數(shù)里保存Raw圖像代碼如下所示:

void mDataStream_NewBufferEvent(object sender, BGAPI2.Events.NewBufferEventArgs mDSEvent)
{try{BGAPI2.Buffer mBufferFilled = null;              mBufferFilled = mDSEvent.BufferObj;if (mBufferFilled == null){MessageBox.Show("Error: Buffer Timeout after 1000 ms!");}else if (mBufferFilled.IsIncomplete == true){          mBufferFilled.QueueBuffer();}else{//回調(diào)函數(shù)保存圖像功能if (bSaveImg){//使用bitmap自帶函數(shù)保存string strtime = DateTime.Now.ToString("yyyyMMddhhmmssfff");string saveimagepath = pImgFileDir + "\\" + strtime + ".jpg";//bitmap.Save(saveimagepath, System.Drawing.Imaging.ImageFormat.Bmp);// Raw格式圖像名稱string Rawimagepath = pImgFileDir + "\\" + strtime + ".raw";// 原始圖像數(shù)據(jù)保存為Raw格式// 獲取第一行的地址IntPtr ptr0 = (IntPtr)((ulong)mBufferFilled.MemPtr + mBufferFilled.ImageOffset);// 計(jì)算圖像每一行的字節(jié)數(shù)int stride = (int)mBufferFilled.Width; // 在MONO格式中,每個(gè)像素只占據(jù)一個(gè)字節(jié)// 聲明一個(gè)數(shù)組保存圖像的數(shù)據(jù)int bytes0 = Math.Abs(stride) * (int)mBufferFilled.Height;// 將圖像數(shù)據(jù)復(fù)制到新的數(shù)組中byte[] rawData = new byte[stride * (int)mBufferFilled.Height];System.Runtime.InteropServices.Marshal.Copy(ptr0, rawData, 0, bytes0);                // 將數(shù)組保存為Raw格式文件System.IO.File.WriteAllBytes(Rawimagepath , rawData);bSaveImg = false;//變量控制單次保存圖像}mBufferFilled.QueueBuffer();}}catch (BGAPI2.Exceptions.IException ex){{string str2;str2 = string.Format("ExceptionType:{0}! ErrorDescription:{1} in function:{2}", ex.GetType(), ex.GetErrorDescription(), ex.GetFunctionName());MessageBox.Show(str2);}}return;
}
}

工業(yè)相機(jī)圖像轉(zhuǎn)換Raw圖像格式重要核心代碼

// Raw格式圖像名稱
string strtime = DateTime.Now.ToString("yyyyMMddhhmmssfff");
string Rawimagepath = pImgFileDir + "\\" + strtime + ".raw";
// 原始圖像數(shù)據(jù)保存為Raw格式
// 獲取第一行的地址
IntPtr ptr0 = (IntPtr)((ulong)mBufferFilled.MemPtr + mBufferFilled.ImageOffset);
// 計(jì)算圖像每一行的字節(jié)數(shù)
int stride = (int)mBufferFilled.Width; // 在MONO格式中,每個(gè)像素只占據(jù)一個(gè)字節(jié)
// 聲明一個(gè)數(shù)組保存圖像的數(shù)據(jù)
int bytes0 = Math.Abs(stride) * (int)mBufferFilled.Height;
// 將圖像數(shù)據(jù)復(fù)制到新的數(shù)組中
byte[] rawData = new byte[stride * (int)mBufferFilled.Height];
System.Runtime.InteropServices.Marshal.Copy(ptr0, rawData, 0, bytes0);
// 將數(shù)組保存為Raw格式文件
System.IO.File.WriteAllBytes(Rawimagepath , rawData);

代碼實(shí)現(xiàn)演示(保存Raw圖像)

在這里插入圖片描述

代碼實(shí)現(xiàn)演示(保存Bmp圖像)

在這里插入圖片描述

代碼實(shí)現(xiàn)演示(Bitmap圖像轉(zhuǎn)換為Raw圖像)

在這里插入圖片描述

代碼實(shí)現(xiàn)演示(本地Raw圖像轉(zhuǎn)換為Bitmap圖像)

這里的轉(zhuǎn)換是可以直接從本地載入Raw圖像將其轉(zhuǎn)換為Bitmap圖像
在這里插入圖片描述

代碼實(shí)現(xiàn)演示(本地Bitmap圖像轉(zhuǎn)換為Raw圖像)

這里的轉(zhuǎn)換是可以直接從本地載入Bitmap圖像將其轉(zhuǎn)換為Raw圖像
在這里插入圖片描述

源碼下載鏈接

完整資源下載鏈接:[基于機(jī)器視覺工業(yè)相機(jī)的Raw圖像和Bitmap圖像的保存和轉(zhuǎn)換(C#代碼,UI界面版)

](https://mbd.pub/o/bread/mbd-ZZiclJ1x)

源碼下載鏈接

若您想獲得博文中涉及的實(shí)現(xiàn)完整全部程序文件(包括測試圖片、視頻,UI文件等,如下圖),這里已打包上傳至博主的面包多平臺(tái)和CSDN下載資源,具體可見參考文章和參考視頻,已將所有涉及的文件同時(shí)打包到里面,點(diǎn)擊即可運(yùn)行,完整文件截圖如下:
在這里插入圖片描述

Baumer工業(yè)相機(jī)通過SDK實(shí)現(xiàn)Raw格式的圖像保存的行業(yè)應(yīng)用

工業(yè)相機(jī)通過SDK實(shí)現(xiàn)Raw格式的圖像保存在許多行業(yè)應(yīng)用中發(fā)揮重要作用,包括但不限于:

  1. 檢測和測量應(yīng)用:在制造業(yè)中,工業(yè)相機(jī)通過SDK保存Raw格式的圖像可用于精確的檢測和測量應(yīng)用,例如缺陷檢測、尺寸測量、外觀質(zhì)量控制等。Raw格式圖像的高質(zhì)量和完整性有助于確保實(shí)時(shí)檢測和測量的準(zhǔn)確性。

  2. 醫(yī)學(xué)成像:醫(yī)療領(lǐng)域也常常利用工業(yè)相機(jī)進(jìn)行醫(yī)學(xué)成像,比如X射線、CT掃描、核磁共振成像等。通過SDK保存Raw格式的圖像能夠保留更多的圖像細(xì)節(jié)和動(dòng)態(tài)范圍,有助于醫(yī)學(xué)圖像的后期處理和分析。

  3. 智能交通:在智能交通系統(tǒng)中,工業(yè)相機(jī)通過SDK保存Raw格式的圖像可用于車牌識(shí)別、交通監(jiān)控等應(yīng)用。Raw格式的圖像數(shù)據(jù)能提供更多細(xì)節(jié),有助于提高識(shí)別的準(zhǔn)確性和可靠性。

  4. 機(jī)器視覺:在自動(dòng)化生產(chǎn)線和機(jī)器視覺系統(tǒng)中,工業(yè)相機(jī)通過SDK保存Raw格式的圖像可用于產(chǎn)品檢測、識(shí)別和定位等應(yīng)用。Raw格式圖像保留了更多的信息,有助于提高機(jī)器視覺系統(tǒng)的準(zhǔn)確性和穩(wěn)定性。

總的來說,工業(yè)相機(jī)通過SDK實(shí)現(xiàn)Raw格式的圖像保存在需要高質(zhì)量圖像數(shù)據(jù)、精確測量和復(fù)雜分析的行業(yè)應(yīng)用中具有廣泛的應(yīng)用前景。

http://www.risenshineclean.com/news/57231.html

相關(guān)文章:

  • 網(wǎng)站設(shè)置關(guān)于我們怎么做推廣策略怎么寫
  • WordPress首頁站內(nèi)搜索開魯seo網(wǎng)站
  • 常熟網(wǎng)站開發(fā)搜索大全引擎入口
  • 利用淘寶視頻服務(wù)做視頻網(wǎng)站百度快照如何優(yōu)化
  • 網(wǎng)站新建設(shè)請示cpa游戲推廣聯(lián)盟
  • 新增備案網(wǎng)站常見的網(wǎng)絡(luò)推廣方式包括
  • 西山區(qū)城市建設(shè)局網(wǎng)站哈市今日頭條最新
  • 建設(shè)企業(yè)網(wǎng)站登錄901百度廣告運(yùn)營
  • 如何建設(shè)淘寶客網(wǎng)站專業(yè)網(wǎng)站推廣軟件
  • 免費(fèi)的erp系統(tǒng)成都網(wǎng)站關(guān)鍵詞推廣優(yōu)化
  • 網(wǎng)站開發(fā)編碼選擇一般是網(wǎng)絡(luò)營銷大師排行榜
  • 福田時(shí)代汽車官方網(wǎng)站品牌傳播方案
  • 58重慶網(wǎng)站建設(shè)最新網(wǎng)站查詢
  • 網(wǎng)站建設(shè)制作汕頭寧波外貿(mào)網(wǎng)站推廣優(yōu)化
  • 建設(shè)銀行河南省分行網(wǎng)站愛站網(wǎng) 關(guān)鍵詞挖掘工具站長工具
  • 化工產(chǎn)品網(wǎng)站建設(shè)百度關(guān)鍵詞優(yōu)化公司哪家好
  • 營銷型網(wǎng)站建設(shè)百度網(wǎng)站的網(wǎng)址
  • 石家莊網(wǎng)站建設(shè)案例網(wǎng)絡(luò)推廣員怎么做
  • 姐妹直播河南網(wǎng)站建設(shè)優(yōu)化技術(shù)
  • 做采集網(wǎng)站賺錢嗎全網(wǎng)自媒體平臺(tái)大全
  • h5彩票網(wǎng)站怎么做百度權(quán)重排名查詢
  • 網(wǎng)站畢業(yè)設(shè)計(jì)圖怎么做培訓(xùn)學(xué)校機(jī)構(gòu)
  • 做本地網(wǎng)站賺錢百度收錄的網(wǎng)站
  • 彩票做的最好是個(gè)網(wǎng)站好佛山seo培訓(xùn)機(jī)構(gòu)
  • 開發(fā)什么網(wǎng)站好seo名詞解釋
  • 企業(yè)管理研究生學(xué)校排名seo引擎優(yōu)化怎么做
  • 一個(gè)人做網(wǎng)站原型網(wǎng)絡(luò)推廣團(tuán)隊(duì)哪家好
  • 上海浦東新區(qū)建設(shè)和交通委員會(huì)網(wǎng)站網(wǎng)絡(luò)熱詞作文
  • 那個(gè)網(wǎng)站做境外自由行便宜電商營銷推廣方案
  • 怎么做有趣的視頻網(wǎng)站軟文范例200字