2.初值、增量、终值可正可负,可以是整数,也可以是小数,只须符合数学逻辑。
(2)while 循环结构 语法:while 逻辑表达式
循环体语句 end
(3)if-else-end分支结构 if 表达式 1
语句1
else if 表达式 2(可选)
语句2
else(可选)
语句3
end end
说明:1.if结构是一个条件分支语句,若满足表达式的条件,则往下执行;若不满足,则跳出if结构。
2.else if表达式2与else为可选项,这两条语句可依据具体情况取舍。 3.注意:每一个if都对应一个end,即有几个if,记就应有几个end。 四、练习内容:
启动电脑,打开MATLAB编程编程环境,依次完成下列实验: 1、图像的打开与显示。在matlab命令窗口执行: >> f=imread('cameraman.tif'); >> imshow(f); 执行结果:
2、图像的信息查询。在matlab命令窗口执行: >> info = imfinfo('ngc6543a.jpg') 显示结果: info =
Filename: [1x95 char]
FileModDate: '01-Oct-1996 17:19:44' FileSize: 27387 Format: 'jpg'
8
FormatVersion: '' Width: 600 Height: 650 BitDepth: 24 ColorType: 'truecolor'
3、图像的存储。在matlab命令窗口执行: >> Img=imread('cameraman.tif');
>> imwrite (Img,'MyImage.jpg');
注:到工作目录中,查看图像文件'MyImage.jpg。
4、彩色图像灰度化编程实验。在matlab打开文本编辑器,编写Lab1_Test1.m文件: 程序代码: clear al;l; close all; clc f=imread('ngc6543a.jpg'); figure,
subplot(1,2,1), imshow(f),title('?-í???') g=rgb2gray(f);
subplot(1,2,2), imshow(g),title(‘灰度图像’) 注:运行M文件,观察结果。
5、图像数值算术运算编程实验。在matlab打开文本编辑器,编写Lab1_Test2.m文件,实现:(1)将每个像素加上50;(2)255减每个像素的值:
程序代码: clc; clear all; close all; %1 打开图像
f=imread('cameraman.tif'); figure,
subplot(1,3,1), imshow(f),title('原图像')
9
[H W]=size(f); %获取图像的高度与宽度 %2 图像加50 for h=1:H for w=1:W t=f(h,w)+50;
if (t>255) %防止举出 f1(h,w)=255; else
f1(h,w)=t; end end end
subplot(1,3,2), imshow(uint8(f1)),title('图像+50后') %3 255减图像 for h=1:H for w=1:W
f2(h,w)=255-f(h,w); end end
subplot(1,3,3), imshow(uint8(f2)),title('255-图像后') 注:运行M文件,观察结果。
6、VS+OpenCV图像处理实验
1、下载VS2010与OpenCV,在自己电脑上安装VS编程环境;
2、启动VS,建立一个项目,整个程序非常简单,实现读取图片并显示功能,操作如下: 2.1首先新建一个VC++控制台项目如下图所示。本文项目名称helloOpenCV。
10
2.2 在项目上右击->属性,如下图窗口所示,选择配置属性->链接器->输入,在右侧配置附加依赖项。
2.3 在附加依赖项中添加以下依赖项(可以根据实际需求调整,注意243为对应的版本号,如果是2.4.4版本243对应换成244):
opencv_calib3d243d.lib opencv_contrib243d.lib opencv_core243d.lib opencv_features2d243d.lib opencv_flann243d.lib opencv_gpu243d.lib opencv_highgui243d.lib opencv_imgproc243d.lib opencv_legacy243d.lib opencv_ml243d.lib opencv_objdetect243d.lib opencv_ts243d.lib opencv_video243d.lib 如右图所示。
2.4、C++相关代码:
#include \
11
#include \
int main( int argc, char** argv ) {
IplImage* pImg; //声明IplImage指针 //载入图像
pImg = cvLoadImage(“lena.jpg”, 1) ; %指定图像文件名,则打开此图像
if (pImg!= 0 ) %图像真的打开了,则显示它 {
cvNamedWindow( \创建窗口 cvShowImage( \显示图像 cvWaitKey(0); //等待按键
cvDestroyWindow( \ //销毁窗口 cvReleaseImage( &pImg ); //释放图像 return 0; }
return -1; }
五、实验内容及要求
1. 安装Matlab编程环境;
2、在Matlab中打开、显示、保存图像;
3、灰度化实验:即打开一幅彩色图像,将其转化成灰度图像:
4、图像数值算术运算编程实验:在matlab打开文本编辑器,编写M文件,打开一幅灰度图像,分别实现:(1)将每个像素加上50;(2)255减每个像素的值:观察比较实验效果;(3)采用矩阵运算,完成这二种计算任务;
5、图像逻辑运算编程实验。在matlab用如下语句构造二幅“二值图像”,自己打开文本编辑器,编写M文件,实现:(1)统计图像A与B中非0像素的数量;(2)将图像A与B“相或”“相与”,得到新的一幅图像C;观察比较运算结果。
B=zeros(200,200); B(80:150,80:150)=1; figure,
subplot(1,2,1), imshow(A),title('图像A') subplot(1,2,2), imshow(B),title('图像B')
6、视频打开与播放实验:在Matalb中打开一个AVI视频文件,并逐帧进行播放;
7、安装VS2010与Opencv图像处理编程环境,实现打开、显示、保存图像的基本功能,且将图像自第50至100行,第60至120列的这块矩形区域变成红色。
12