我有一个512*512的的数据矩阵,每个元素是10位的数据,但用的2byte存储的
想用vb显示出来,可发现vb里好象都是显示rgb颜色的,没有专门显示灰度图的.
而且我的数据都比较集中,数值都在130左右.希望能在显示的时候颜色范围控制的小一点,可以使对比度高点.
希望给我大虾不吝赐教
想用vb显示出来,可发现vb里好象都是显示rgb颜色的,没有专门显示灰度图的.
而且我的数据都比较集中,数值都在130左右.希望能在显示的时候颜色范围控制的小一点,可以使对比度高点.
希望给我大虾不吝赐教
解决方案 »
- API高手进
- 如何在Win2k下操作有权限限制的注册表键,如HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run?
- 怎么在不改变当前关联的表的情况下增加或减少当前表的显示记录
- 请问VB6.0中有选项卡吗?有怎么调出来呢?
- 高分求教关于setup factory打包的问题!
- 随机数的问题 在线等
- 关于鼠标光标问题,鼠标被隐藏在游戏画面之后,游戏画面显示的是游戏自定义光标,如何把系统鼠标放到游戏画面前面?
- 调查:你是开发员?在哪个城市工作?UP有分!
- 布尔型数组怎么样让它全是True
- 为什么我结不了帖呢?
- 出现错误"对象变量未设置或With块变量未设置"
- 从SQL导出数据到Excel 如何新建Excel
把图像变成灰度:
1。读取位图像素的rgb值,
2。用读取的retval=(r+g+b)/3重新写回图像rgb(retval,retval,retval)
Private Sub CmdGray_Click()
'转换为灰度图像
Dim red As Integer
Dim green As Integer
Dim blue As Integer
Dim c As Long
Dim graycolor As Long
Dim x0 As Integer
Dim y0 As Integer
For x0 = 0 To Picture1.Width
For y0 = 0 To Picture1.Height
c = Picture1.Point(x0, y0)
red = (c And &HFF)
green = (c And 62580) / 256
blue = (c And &HFF00) / 65536
graycolor = (red + green + blue) / 3
Picture2.PSet (x0, y0), RGB(graycolor, graycolor, graycolor)
DoEvents
Next
Next
End SubPrivate Sub CmdOpen_Click()
'打开文件并显示在Picture1中
On Error GoTo Err_handle
CmnDlg1.DialogTitle = "打开"
CmnDlg1.ShowOpen
Picture1.Picture = LoadPicture(CmnDlg1.FileName)
Picture2.Width = Picture1.Width
Picture2.Height = Picture1.Height
Exit Sub
Err_handle: Exit Sub
End SubPrivate Sub CmdSave_Click()
'保存转换后的图像
On Error GoTo Err_handle
CmnDlg1.DialogTitle = "保存"
CmnDlg1.Filter = ("位图文件(*.bmp)|*.bmp")
CmnDlg1.ShowSave
SavePicture Picture2.Image, CmnDlg1.FileName
Err_handle: MsgBox Err.Description, vbOKOnly
Exit Sub
End Sub
我记得灰度的8bit就应该可以了吧,1个byte就可以保存了啊RGB是LONG 4Byte的,你把你的灰度值得出来,用RGB(GrayValue, GrayValue, GrayValue)获得对应的灰色,显示出来就OK了如果集中在130左右,可能看起来是一片灰色,如果有需要,可以酌情在GrayValue上增加一个量拉大色差.