作者s3748679 (冷羽忆尘)
看板Visual_Basic
标题Re: [.NET] 请教影像部份的问题
时间Mon Aug 1 14:27:28 2011
※ 引述《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