※ 引述《pkyu (鍋蓋)》之銘言:
: 請輸入專案類型(網站專案或者應用程式專案):
: 因為工作遇到的問題 所以跟各位請教一下
: 相機(工業用的品檢機)連接到PC 使用VB.NET 2005 exprese
: 廠商的軟體本身已經有vb模組可使用
: 相機有800*600 模式
: 可是我VB做的框沒辦法這麼大,我該如何裁剪掉呢
: EX
: ___________ ________
: | | | |
: | | | |
: | | ---> | |
: | | |________|
: |___________|
: 5*5 4*4
: 實際大小 VB拉的範圍
: 雖說顯示會自己切掉,但是當用內建存圖,會抓超過vb拉的範圍
: 問題一、如何將照下來的照片裁成自己想要的大小?
Function ClipImage(ByVal img As Image, ByVal r As Rectangle) As Image
Dim bmp As New Bitmap(r.Width, r.Height)
Dim g As Graphics = Graphics.FromImage(bmp)
g.DrawImage(img, New Point(-r.X, -r.Y))
g.Dispose()
Return bmp
End Function
使用範例:
Dim img As Image = Image.FromFile("d:\test.bmp")
Dim img2 As Image = ClipImage(img, New Rectangle(10, 10, 200, 200))
img2.Save("d:\test_clip.bmp")
: 問題二、如果我要再影像上加上輔助框該怎做?(類似樣品的定位點)
從Image建立Graphics,使用到Graphics.FromImage:
Shared Function FromImage(ByVal image As Image) As Graphics
接著在用Graphics.DrawRectangle:
Sub DrawRectangle(ByVal pen As Pen, ByVal rect As Rectangle)
畫出矩形,範例如下:
Dim img As Image = Image.FromFile("d:\test.bmp")
Using g As Graphics = Graphics.FromImage(img)
g.DrawRectangle(Pens.Black, _
New Rectangle(0, 0, img.Width - 1, img.Height - 1))
End Using
img.Save("d:\test_rect.bmp")
: 問題三、該怎麼將影像中的座標點提取顏色出來判斷?
先用你的Image建立Bitmap,使用Bitmap.New:
Sub New(ByVal original As Image)
接著使用Bitmap.GetPixel、Bitmap.SetPixel:
Sub SetPixel(ByVal x As Integer, ByVal y As Integer, _
ByVal color As Color)
Function GetPixel(ByVal x As Integer, ByVal y As Integer) As Color
使用範例:
Dim img As Image = Image.FromFile("d:\test.bmp")
Dim bmp As New Bitmap(img)
For i As Integer = 0 To bmp.Width - 1
For j As Integer = 0 To bmp.Height - 1
Dim c As Color = bmp.GetPixel(i, j)
Dim _c As Color = Color.FromArgb(c.A / 2, _
c.R / 2, _
c.G / 2, _
c.B / 2)
bmp.SetPixel(i, j, _c)
Next
Next
bmp.Save("d:\test_handle.bmp")
: 麻煩懂的人提點提點(因為剛接觸VB,工作又有點趕)
: 我會很感謝大家的
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.164.82.202