没明白你意思,看看是这样么?Dim PGet As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(picture)for i=1 to picture.heightfor j=1 to picture.widthPGet .GetPixel(j, i)nextnext
成都创新互联公司成立于2013年,是专业互联网技术服务公司,拥有项目成都网站制作、成都网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元白河做网站,已为上家服务,为白河各地企业和个人服务,联系电话:028-86922220
建议用VC做吧,VB图像处理速度慢。
VC的话其实不怎么难,简单学学图像处理,网上现成的程序一把,涉及降噪、图像二值化、边界提取、中心计算等问题,还有回调函数也用的到。
你的代码中Picture2有图片,Image1没图片,当然不会相等。
Picture属性的值是句柄,每次调用LoadPicture函数,都生成新句柄,即使加载同一个文件,句柄也不同。
要比较图片是否相同,应该事先定义图片。
通用声明区定义图片变量:
Dim sp0, sp1, sp2
Form_Load()事件中把图片赋值(用Set):
Set sp0 = LoadPicture(App.Path + "\资源\灯座.jpg")
Set sp1 = LoadPicture(App.Path + "\资源\未亮的灯泡.jpg")
Set sp2 = LoadPicture(App.Path + "\资源\亮的灯泡.jpg")
Picture1.Picture = sp1
Picture2.Picture = sp0
以后加载图片,直接用变量,不再用LoadPicture函数,这样如果是同一个图片,Picture属性就会相等了。
这问题有点笼统,软糖来说说把:
图像处理由System.Drawing命名空间负责。
主要是Bitmap类和Graphics类。
Bitmap表示一个位图,可以是BMP,JPG,PNG等文件。
装载位图
Dim 位图 As Bitmap = Bitmap.FromFile("C:\Image1.PNG")
Graphics表示一张画纸,能够进行绘制操作。
它可以被窗体、控件、位图调用CreateGraphics()方法来创建。
然后调用Graphics.Draw开头的一系列函数来绘制图像和图形,Fill开头的填充图形。
创建画纸并绘制位图
Dim 画纸 As Graphics = Me.CreateGraphics()
画纸.DrawImage(位图, 100, 100, 256, 256)
可以将上面三行放到Form1_Load中测试,把路径改一下,
还可以把Me改为能在上面绘图的控件的名称。
更多内容请看MSDN的System.Drawing命名空间。
如满意,请采纳,谢谢。
你是要把图中的深灰色提取出来吗?如果是 ,先把图像灰度化--关键是最优阀值的确定--2值化--再提取边缘,这个不难。我正在用VB写验证码识别,我刚试了一下 效果还可以 我是1级用户 不能上传图片,QQ395819377
1-有扩展名,依据扩展名判断(这个简单)
2-没有扩展名,比如给你个图片文件image,文件没有扩展名,可以通过以下方式进行判断,但同时如果确定是图片且系统支持的类型,则无需关心文件类型,直接读取到Image就可以,系统也是依据以下的方式判断
1.JPEG【判断文件开始2字节与结束2字节】
- 文件头标识 (2 bytes): $ff, $d8 (SOI) (JPEG 文件标识)
- 文件结束标识 (2 bytes): $ff, $d9 (EOI)
2.TGA
- 未压缩的前5字节 00 00 02 00 00
- RLE压缩的前5字节 00 00 10 00 00
3.PNG
- 文件头标识 (8 bytes) 89 50 4E 47 0D 0A 1A 0A
4.GIF
- 文件头标识 (6 bytes) 47 49 46 38 39(37) 61
G I F 8 9 (7) a
5.BMP
- 文件头标识 (2 bytes) 42 4D
B M
6.PCX
- 文件头标识 (1 bytes) 0A
7.TIFF
- 文件头标识 (2 bytes) 4D 4D 或 49 49
8.ICO
- 文件头标识 (8 bytes) 00 00 01 00 01 00 20 20
9.CUR
- 文件头标识 (8 bytes) 00 00 02 00 01 00 20 20
10.IFF
- 文件头标识 (4 bytes) 46 4F 52 4D
F O R M
11.ANI
- 文件头标识 (4 bytes) 52 49 46 46
R I F F