vb应用于图像处理(计算机组成).pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《vb应用于图像处理(计算机组成).pdf》由会员分享,可在线阅读,更多相关《vb应用于图像处理(计算机组成).pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验二图象的垂直、水平反转一、任务将原始图象进行垂直和水平反转二、代码Private Sub Form_Load()Picture1.ScaleMode=vbPixels 使得图片框1 的显示模式以象素为单位,这样处理速度会比较快Picture2.ScaleMode=vbPixels 使得图片框2 的显示模式以象素为单位End Sub Private Sub mnuLoadPic_Click()装载图象Dim PictureName As String 获得图片文件CommonDialog1.Filter=图片(*.bmp;*.gif;*.jpg)|*.bmp;*.gif;*.jpg Comm
2、onDialog1.Action=1 PictureName=CommonDialog1.FileName If PictureName=Then End 没有图片就结束程序Picture1.AutoSize=True 设置 AutoSize 为 True 可以使得图片的大小刚好显示完整的图象Picture1.Picture=LoadPicture(PictureName)加载图片Beep 提示运行结束End Sub Private Sub mnuHorizonReverse_Click()水平反转图象以下 4 句使得两个图片框一样大小,并且水平距离间隔10,垂直位置相同Picture2.To
3、p=Picture1.Top Picture2.Width=Picture1.Width Picture2.Height=Picture1.Height Picture2.Left=Picture1.Left+Picture1.Width+10 从 Picture1 上用 Point 读入一个点的颜色数据,在Picture2 上用 Pset画出来,但左右位置反转For x=Picture1.ScaleWidth To 0 Step-1 外循环在水平方向上从右到左处理每一列For y=0 To Picture1.ScaleHeight 内循环在垂直方向的同一列中,从上到下处理每一点Picture
4、2.PSet(Picture2.ScaleWidth-x,y),Picture1.Point(x,y)Picture2.ScaleWidth-x就是让原始点在水平方向上反转Next DoEvents 转让控制权,以便让操作系统处理其它的事件Next Beep 提示运行结束End Sub Private Sub mnuVerticalReverse_Click()垂直反转图象以下 4 句使得两个图片框一样大小,并且水平距离间隔10,垂直位置相同Picture2.Top=Picture1.Top Picture2.Width=Picture1.Width Picture2.Height=Pictu
5、re1.Height Picture2.Left=Picture1.Left+Picture1.Width+10 从 Picture1 上用 Point 读入一个点的颜色数据,在Picture2 上用 Pset画出来,但位置上下颠倒For y=Picture1.ScaleHeight To 0 Step-1 外循环在垂直方向上从下到上处理Picture1 的每一行For x=0 To Picture1.ScaleWidth 内循环在水平方向的同一行中,从左到右处理Picture1 的每一点Picture2.PSet(x,Picture2.ScaleHeight-y),Picture1.Poin
6、t(x,y)Picture2.ScaleHeight-Y 就是让原始点在垂直方向上颠倒Next DoEvents 转让控制权,以便让操作系统处理其它的事件Next Beep 提示运行结束End Sub Private Sub mnuExit_Click()结束程序End End Sub 三、运行结果垂直反转图水平反转图四、作业1、调试程序使之能运行。2、如果图片框的ScaleMode 改为 vbTwips,运行时出现什么现象,为什么?实验三图象的左右90 度旋转四、任务将原始图象进行正负90 度旋转五、代码Private Sub Form_Load()Picture1.ScaleMode=vb
7、Pixels 使得图片框1 的显示模式以象素为单位,这样处理速度会比较快Picture2.ScaleMode=vbPixels 使得图片框2 的显示模式以象素为单位End Sub Private Sub mnuLoadPic_Click()装载图象Dim PictureName As String 获得图片文件CommonDialog1.Filter=图片(*.bmp;*.gif;*.jpg)|*.bmp;*.gif;*.jpg CommonDialog1.Action=1 PictureName=CommonDialog1.FileName If PictureName=Then End 没
8、有图片就结束程序Picture1.AutoSize=True 设置 AutoSize 为 True 可以使得图片的大小刚好显示完整的图象Picture1.Picture=LoadPicture(PictureName)加载图片Beep 提示运行结束End Sub Private Sub mnuRotateLeft90_Click()向左旋转90 度以下 4 句使得两个图片框一样大小,并且水平距离间隔10,但 Picture2 变成 Picture1 的垂直位置Picture2.Width=Picture1.Height Picture2.Height=Picture1.Width Pictur
9、e2.Top=Picture1.Top Picture2.Left=Picture1.Left+Picture1.Width+10 从 Picture1 上用 Point 读入一个点的颜色数据,在Picture2 上用 Pset画出来,但位置向左旋转90 度For y=0 To Picture1.ScaleHeight 外循环在垂直方向上从下到上处理Picture1 的每一行For x=0 To Picture1.ScaleWidth 内循环在水平方向的同一行中,从左到右处理Picture1 的每一点Picture2.PSet(y,Picture2.ScaleHeight-x),Picture
10、1.Point(x,y)Picture1与 Picture2 中的 x,y 值分别互相交换,但必须用Picture2.ScaleHeight 减去 x 才能体现向左旋转90 度Next DoEvents 转让控制权,以便让操作系统处理其它的事件Next Beep 提示运行结束End Sub Private Sub mnuRotateRight90_Click()向右旋转90 度以下 4 句使得两个图片框一样大小,并且水平距离间隔10,但 Picture2 变成 Picture1 的垂直位置Picture2.Width=Picture1.Height Picture2.Height=Pictur
11、e1.Width Picture2.Top=Picture1.Top Picture2.Left=Picture1.Left+Picture1.Width+10 从 Picture1 上用 Point 读入一个点的颜色数据,在Picture2 上用 Pset画出来,但位置向右旋转90 度For y=0 To Picture1.ScaleHeight 外循环在垂直方向上从下到上处理Picture1 的每一行For x=0 To Picture1.ScaleWidth 内循环在水平方向的同一行中,从左到右处理Picture1 的每一点Picture2.PSet(Picture2.ScaleWidt
12、h-y,x),Picture1.Point(x,y)Picture1与 Picture2 中的 x,y 值分别互相交换,但必须用Picture2.ScaleWidth 减去 y 才能体现向右旋转90 度Next DoEvents 转让控制权,以便让操作系统处理其它的事件Next Beep 提示运行结束End Sub Private Sub mnuExit_Click()结束程序End End Sub 六、运行结果右转 90 度效果图左转 90 度效果图四、作业3、调试程序使之能运行。4、观察旋转过程中图象象素的移动方向,请改一种移动方向达到同样效果。实验四窗体颜色渐变七、任务窗体的颜色在水平和
13、垂直方向均逐步加深八、代码Private Sub Form_Load()Me.ScaleMode=vbPixels 窗体的显示模式设置为象素End Sub Private Sub Form_Click()从左到右一列一列处理,在每一列中从上到下处理每一个象素每一象素的颜色由“水平方向所占比例值”加上“垂直方向所占比例值”,然后取平均值Dim dX As Single 水平方向的每个象素所得的颜色平均值Dim dY As Single 垂直方向的每个象素所得的颜色平均值dX=255/Me.ScaleWidth 计算水平方向的每个象素的颜色平均值dY=255/Me.ScaleHeight 计算垂直
14、方向的每个象素的颜色平均值For x=0 To Me.ScaleWidth 从左到右逐列处理For y=0 To Me.ScaleHeight 在同一列中,从上到下逐点处理colorX=x*dX 计算水平方向点(x,y)的颜色所得值colorY=y*dY 计算垂直方向点(x,y)的颜色所得值colorXY=Int(colorX+colorY)/2)取水平、垂直方向颜色所得值的平均值,Int 函数表示取整数Me.PSet(x,y),RGB(0,0,colorXY)RGB函数中兰色部分设置为平均值,红色、绿色均设置为0 Next y Next x Beep 提示程序结束End Sub 九、运行结果
15、颜色渐变图四、作业5、调试程序使之能运行。2、改成红色或绿色渐变图。实验五彩色图象转换为灰色图象十、任务将彩色图象转换为灰色图象。十一、代码 获得图片文件Private Sub Form_Load()Picture1.ScaleMode=vbPixels 使得图片框1 的显示模式以象素为单位,这样处理速度会比较快Picture2.ScaleMode=vbPixels 使得图片框2 的显示模式以象素为单位End Sub Private Sub mnuLoadPic_Click()装载图象Dim PictureName As String 获得图片文件CommonDialog1.Filter=图片
16、(*.bmp;*.gif;*.jpg)|*.bmp;*.gif;*.jpg CommonDialog1.Action=1 PictureName=CommonDialog1.FileName If PictureName=Then End 没有图片就结束程序Picture1.AutoSize=True 设置 AutoSize 为 True 可以使得图片的大小刚好显示完整的图象Picture1.Picture=LoadPicture(PictureName)加载图片以下 4 句使得两个图片框一样大小,并且水平距离间隔10,垂直位置相同Picture2.Top=Picture1.Top Pictu
17、re2.Width=Picture1.Width Picture2.Height=Picture1.Height Picture2.Left=Picture1.Left+Picture1.Width+10 Beep 提示运行结束End Sub Private Sub mnuColorToGray_Click()彩色图转换位灰色图Dim oRGB As Long 存放旧图象上某一点的RGB 值Dim nRGB As Long 存放新图象上某一点的RGB 值Dim x As Long,y As Long 循环变量Dim bBlue As Long,bRed As Long,bGreen As Lo
18、ng 保存某个颜色中三种原色成分数据Dim lGray As Long 三原色合成后的灰度值For x=0 To Picture1.ScaleWidth 从左到右按水平方向处理每一列For y=0 To Picture1.ScaleHeight 从上到下处理每一列中的每个象素oRGB=Picture1.Point(x,y)取得 Picture1 上(x,y)点的颜色值,该值为 6 位十六进制,三种颜色各占两位,组成形式是BBGGRR bRed=oRGB And&HFF 获得红色值。相当于和H0000FF 进行“与”运算,取得最低两位的红色值bGreen=(oRGB&H100)And&HFF 获
19、得绿色值。除以 H100 表示将处于中间两位的“绿色”数据右移两位,变成最低两位,“与”运算取出该值bBlue=(oRGB&H10000)And&HFF 获得兰色值。除以H10000 表示将处于最高两位的“蓝色”数据右移四位,变成最低两位,“与”运算取出该值lGray=0.3*bRed+0.59*bGreen+0.11*bBlue 将三原色合成为灰度值,三个权重是经验值nRGB=RGB(lGray,lGray,lGray)将 RGB 函数中的三个参数均设置为上述的合成值,形成新的颜色(即灰色)Picture2.PSet(x,y),nRGB 在 Picture2 的相同位置显示新的灰色象素Nex
20、t y Next x Beep 提示运行结束End Sub Private Sub mnuExit_Click()结束程序End End Sub 十二、运行结果彩色图转灰色图效果四、作业6、调试程序使之能运行。7、改变语句lGray=0.3*bRed+0.59*bGreen+0.11*bBlue中三者的权重(和必须为1),观察有无变化。实验六两个大小相同的图片混合一、任务将两个图象按比例混合,产生新的图象二、代码Private Sub Form_Load()下面两句使得Picture3 与 Picture1 相同Picture3.Height=Picture1.Height Picture3.
21、Width=Picture1.Width 下面 3 句使得图片框不能随意更改大小Picture1.AutoSize=False Picture1.AutoSize=False Picture1.AutoSize=False End Sub Private Sub cmdCombine_Click()混合图象Dim x,y As Long 图象的水平方向、垂直方向坐标值Dim colorOfPic1,colorOfPic2,colorOfPic3 As Long 分别指三个图片中某点的三原色RGB 混合值Dim red_colorOfPic1,red_colorOfPic2,red_colorO
22、fPic3 As Long 分别指三个图片中某点的三原色RGB混合值中的红色值Dim green_colorOfPic1,green_colorOfPic2,green_colorOfPic3 As Long 分别指三个图片中某点的三原色 RGB 混合值中的绿色值Dim blue_colorOfPic1,blue_colorOfPic2,blue_colorOfPic3 As Long 分别指三个图片中某点的三原色RGB 混合值中的蓝色值For x=0 To Picture1.ScaleWidth For y=0 To Picture1.ScaleHeight 下面四句分离出Picture1
23、中某点的R、G、B 成分colorOfPic1=Picture1.Point(x,y)获取 Picture1 上点(x,y)处的 RGB 综合值red_colorOfPic1=colorOfPic1 And&HFF 获取 Picture1 上点(x,y)处 RGB 值中的红色值green_colorOfPic1=(colorOfPic1&H100)And&HFF 获取 Picture1 上点(x,y)处 RGB 值中的绿色值blue_colorOfPic1=(colorOfPic1&H10000)And&HFF 获取 Picture1 上点(x,y)处 RGB 值中的蓝色值下面四句分离出Pic
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vb 应用于 图像 处理 计算机 组成
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内