永发信息网

如何用vb将图片二值化?

答案:2  悬赏:50  手机版
解决时间 2021-02-18 11:50
麻烦各位对此有过研究的仁兄帮忙解答一下,小弟对这一块不甚了解。希望各位提供一些资料,最好是源代码?谢谢!!!!

没人回答???????????
最佳答案
Option Explicit
Dim R As Byte
Dim G As Byte
Dim B As Byte
Dim aaa As Long
Dim bbb As Byte
Dim i As Integer
Dim j As Integer
Private Sub Command1_Click()
For i = 1 To Picture1.ScaleHeight Step 15
For j = 1 To Picture1.ScaleWidth Step 15
aaa = Picture1.Point(j, i)
R = (aaa Mod 256) '取得红色值
G = (aaa Mod 65536) \ 256 '取得绿色值
B = (aaa Mod 16777216) \ 65536 '取得蓝色值
bbb = R / 3 + G / 3 + B / 3 '取得灰度值
If bbb >= 171 Then '这里bbb可作适当改变以获得最佳2值化效果
Picture2.PSet (j, i), RGB(255, 255, 255)
Else
Picture2.PSet (j, i), RGB(0, 0, 0)
End If
Next j
Next i
End Sub
全部回答
'窗体里面加一个按钮command1和图片picture1,单击按钮就会把picture1里面的图片二值化 '我这里没写加载的代码,你自己补上 private declare function getpixel lib "gdi32" (byval hdc as long, byval x as long, byval y as long) as long private declare function setpixelv lib "gdi32" (byval hdc as long, byval x as long, byval y as long, byval crcolor as long) as long function getr(byval hrgb as long) as long getr = hrgb and &hff '分离出红色 end function function getg(byval hrgb as long) as long getg = (hrgb and 65280) \ 256 '分离出绿色 end function function getb(byval hrgb as long) as long getb = (hrgb and &hff0000) \ 65536 '分离出蓝色 ...展开'窗体里面加一个按钮command1和图片picture1,单击按钮就会把picture1里面的图片二值化 '我这里没写加载的代码,你自己补上 private declare function getpixel lib "gdi32" (byval hdc as long, byval x as long, byval y as long) as long private declare function setpixelv lib "gdi32" (byval hdc as long, byval x as long, byval y as long, byval crcolor as long) as long function getr(byval hrgb as long) as long getr = hrgb and &hff '分离出红色 end function function getg(byval hrgb as long) as long getg = (hrgb and 65280) \ 256 '分离出绿色 end function function getb(byval hrgb as long) as long getb = (hrgb and &hff0000) \ 65536 '分离出蓝色 end function private sub command1_click() dim hhdc as long, i as long, j as long, t as long, hhd as long const fz = 112 '二值化阀值,不同阀值效果不同 fz = text1.text dim hhdc as long, i as long, j as long, t as long, hhd as long hhdc = picture1.hdc picture1.scalemode = vbpixels for i = 0 to picture1.scalewidth for j = 0 to picture1.scaleheight t = getpixel(hhdc, i, j) hhd = int((getr(t) + getg(t) + getb(y)) / 3) if hhd > fz then setpixelv hhdc, i, j, vbwhite else setpixelv hhdc, i, j, vbblack end if next next msgbox "转换完毕!" end sub收起
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
维纳斯美妆吧地址在什么地方,想过去办事
小学大队干部组织委员竞选稿
请推荐一些周杰伦其他的类似《夜的第七章》、
双岔邮政支局怎么去啊,有知道地址的么
cpu烧到九十度以上会不会有什么问题
多轴拖动系统为什么要折算成单轴拖动系统
直线3x+4y-13=0与圆(x-2)2+(y-3)2=1的位
西安外科医学科技有限公司地址在什么地方,想
现在觉得日本很发达
魅蓝x和oppor9s外观都很漂亮,哪个更好,各位
英国政治家帕麦斯顿说“我们没有永久的盟友和
另一块比她重5分之2千克,两块蛋糕一共重多少
南宁市万涛针织厂批发部地址在哪,我要去那里
Ping在同网段的IP地址
无尘室吸尘器什么牌子的好一些??
推荐资讯
淋巴排毒精油有效果吗?
ck毛哥火线v2.2至尊版怎么增加电脑
霸王鸡地址有知道的么?有点事想过去
求 有关琵琶的古代诗文
四柱八字命理
“教育即生长”是教育哲学家( )的观点
在广东省肇庆市,出了交通事故伤人,伤者还在
正时链条过长会不会没动力
庆隆宾馆地址在什么地方,想过去办事
宏盛百货我想知道这个在什么地方
纽约·纽约奢华摄影会馆地址有知道的么?有点
大北沟桥我想知道这个在什么地方
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?