基于OpenCV的数字图像处理 课件 项目一 生成具有艺术效果的图像_第1页
基于OpenCV的数字图像处理 课件 项目一 生成具有艺术效果的图像_第2页
基于OpenCV的数字图像处理 课件 项目一 生成具有艺术效果的图像_第3页
基于OpenCV的数字图像处理 课件 项目一 生成具有艺术效果的图像_第4页
基于OpenCV的数字图像处理 课件 项目一 生成具有艺术效果的图像_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

图像读取数字图像基础

数字图像由像素点组成,一幅数字图像就是由一个个像素点组成。

数字图像按颜色不同一般可分为灰度图像和彩色图像。灰度图像的像素图彩色图像的像素图灰度图像

灰度图像包含256个灰度级,用数值区间[0,255]表示:0为黑色,255为白色,其余数值表示从纯白到纯黑之间的不同级别的灰度。256个灰度级可以用一个字节(8bit)表示。

图1.1灰度图像1502001371986280901201602102305065881502501804857365920023024056785949170210198877758402002102201902154367187212220130154126128图1.2灰度图像的像素表示图像的通道数在灰度图像中,每个像素点只需要一个数据表示其对应的灰度级别,这种图像称为单通道图像。对于彩色图像,一个像素点的颜色则无法用一个像素值表示,每个像素点需要红、绿、蓝三种颜色组合来配出各种不同的色彩。一般情况下,红色通道用R表示,绿色通道用G表示,蓝色通道用B表示,每个通道的值可以取0-255之间的数值,表示不同颜色的级别,不同的R、G、B值可以组合为255*255*255=16581375种颜色,用于表示自然界中的大部分颜色。彩色图像图1.3是一幅彩色图像,图1.4是图1.3的像素表示。图1.4中红、绿、蓝三个颜色通道中相同位置的点的取值组成该像素点的R值、G值、B值。三个值的取值范围均为0-255。图1.3彩色图像图1.4RGB图像对应的像素值A表1.1RGB常用色彩值RGB常用色彩值RGB值颜色色卡(0,0,0)黑色(255,255,255)白色(255,0,0)红色(0,255,0)绿色(0,0,255)蓝色(255,255,0)黄色(0,255,255)青色(255,0,255)品红图像读取函数

使用OpenCV读取图像,首先需要通过语句importcv2引入OpenCV库,OpenCV库读取图像的函数为cv2.imread(),函数格式如下:img=cv2.imread(filename[,flag])img为返回值,值是读取到的图像,如果未读到,则返回None;filename为要读取图像的路径及名称;flag为读取标记,用来控制以什么类型来读取,默认值为-1,具体如表1.2所示。图像读取函数值含义数值cv2.IMREAD_UNCHANGED保持格式不变-1cv2.IMREAD_GRAYSCALE将图像调整为单通道的灰度图像0cv2.IMREAD_COLOR将图像调整为3通道的BGR图像,为默认值1cv2.IMREAD_ANYDEPTH当载入的图像深度为16或者32位时,就返回对应的深度图像,否则,将其转换为8位图像2cv2.IMREAD_ANYCOLOR以任何可能的颜色格式读取图像4cv2.IMREAD_LOAD_GDAL使用GDAL驱动程序加载图像8表1.2flag标记的含义图像读取案例importcv2img=cv2.imread("image\\fish.jpg",0)print(img)注意:此处程序1.1read_fish.py和image在同一级目录下,fish.jpg存放在image目录下,如果目录不同,请修改路径。【例1.1readfish.py】读取image目录下的fish.jpg图像,并打印读取结果。图像读取案例程序解析:图像fish.jpg虽然是彩色图像,但是在调用cv2.imread()函数读取图像时第二个参数设置为0表示用灰度图像读取,因此返回的图像img为灰度图像,用print()函数输出的结果中每个像素点均是一个像素值表示该点的灰度级别。输出结果如下:[[254254254...254254254][254254254...254254254][254254254...254254254]]图像读取案例如果将第二个参数0改为-1,保持原来图像格式不变,则输出结果如下:[[[252254254][252254254][252254254]...[252254254][252254254][252254254]]]

由输出结果看到,每个像素点均是三个像素值,第一个像素点的值为[252254254],表示第一个像素点的B通道值为252,G通道值为254,R通道值为254。特别注意:

OpenCV使用cv2.imread()函数读取图像后图像的通道顺序为B、G、R,因此获取的像素点的三个值分别是B通道值、G通道值、R通道值。谢

谢!图像属性图像属性

数字图像的属性一般包括图像的形状,像素数目、数据类型、分辨率、图像深度等。图像形状行数(高度)列数(宽度)通道数像素数目行数×列数×通道数数据类型int8,一个像素值由8位二进制表示分辨率单位面积内的像素密度,决定图像的清晰度图像深度灰度图像:8BGR彩色图像:24

数字图像的属性一般用shape属性来获取,图像大小一般用size获取,类型用dtype获取。灰度图像属性案例【例1.5image_shape.py】获取灰度图像gray_fish.jpg属性。importcv2fish=cv2.imread("image//gray_fish.jpg",0)#读取图像,flag=0,表示以灰度图像读取print("图像的形状为:",fish.shape)print("图像的大小为:",fish.size)print("图像的数据类型为:",fish.dtype)灰度图像属性案例输出结果:图像的形状为:(194,259)图像的大小为:50246图像的数据类型为:uint8结果解析:输出结果中第一行为图像的行数194,行数即图像的高度,图像的列数259,列数即图像的宽度。输出结果的第二行为图像的像素数之和,即:行数194*列数259=50246,像素数之和也就是图像的大小。彩色图像属性案例【例1.6image_shape_color.py】读取fish.jpg,查看其形状和大小。importcv2fish=cv2.imread("image//fish.jpg",-1)print("图像的形状为:",

fish.shape

)print("图像的大小为:",

fish.size

)print("图像的数据类型为:",

fish.dtype

)彩色图像属性案例图像的形状为:(194,259,3)图像的大小为:150738图像的数据类型为:uint8输出结果:结果解析:输出结果中第一行为图像的行数194,行数即图像的高度,图像的列数259,列数即图像的宽度,图像的通道数为3。输出结果的第二行为图像的像素数之和,即:行数194*列数259*通道数3=150738,像素数之和也就是图像的大小。可见,彩色图像比与其行列数相同的灰度图像占用空间更大。谢谢!像素访问

数字图像是通过像素点来确定图像的颜色,如果需要获取某个像素点的值,可以访问该像素点,也可以访问某个区域的连续多个像素点。像素访问访问灰度图像像素点案例【例1.7visit_Pixel.py】访问gray_fish.jpg的第10行第20列像素点。importcv2fish=cv2.imread("image//gray_fish.jpg",0)print(fish[10,20])单击此处输入(您的)智能图形项正文,文字是您思想的提炼,请尽量言简意赅的阐述观点,单击此处添加正文。输出结果:205print(fish[10,20])语句中中括号中的第一个值为行号,第二个值为列号,行号和列号之间用逗号分割,改变这两个值即可实现访问其他行列的元素值。但是行列号不能超过图像的总行数和列数,否则会报错超出索引范围,可以使用shape属性查看图像的行数和列数,注意行列序号均是从0开始。访问灰度图像像素点区域案例

上面案例是访问灰度图像中的一个像素点的值,如果要访问一个区域的像素点,则需要使用切片索引。【例1.8vist_Pixels.py】访问gray_fish.jpg的第10-12行,第40-45列的像素值。importcv2fish=cv2.imread("image//gray_fish.jpg",0)print(fish[10:12,40:45])输出结果:[[255172144229253][224173132255252]]访问彩色图像像素点

灰度图像的一个像素点只有行号和列号,,彩色图像的一个像素点对应B、G、R三个值,即,除了行号、列号以外还有通道号。因此访问的时候如果指明通道号,就是获取该通道的某像素点的值,如果未指明通道号,则获取所有通道的像素值。A访问彩色图像像素点案例【例1.9visit_color_pixel.py】读取彩色图像的第10行、第20列、第0号通道像素值。importcv2fish=cv2.imread("image//fish.jpg",-1)print(fish[10,20,0])单击此处输入(您的)智能图形项正文,文字是您思想的提炼,请尽量言简意赅的阐述观点,单击此处添加正文。输出结果:199输出为第10行第20列第0号通道即B通道的值。仅输出0号通道的值,因此只有一个值。访问彩色图像像素点案例【例1.10visit_3channel.py】读取彩色图像地10行、第20列的所有通道值。importcv2fish=cv2.imread("image//fish.jpg",-1)print(fish[10,20])单击此处输入(您的)智能图形项正文,文字是您思想的提炼,请尽量言简意赅的阐述观点,单击此处添加正文。输出结果:[199200221]输出第10行第20列的像素点的值,未指明通道号,因是彩色图像,所以输出结果为三个通道值,即B值199,G值200,R值221。访问彩色图像像素点案例【例】1.11visit_color_1c_region.py】读取彩色图像的第10到12行、第40到45列的0号通道值。importcv2fish=cv2.imread("image//fish.jpg",-1)print(fish[10:12,40:45,0])单击此处输入(您的)智能图形项正文,文字是您思想的提炼,请尽量言简意赅的阐述观点,单击此处添加正文。输出结果:[[255176146225248][229176131248244]]输出结果为第10、11行第40、41、42、43、44列的值,因只输出0号通道值,所以输出结果中每个像素点只有一个值。访问彩色图像像素区域案例【例1.12visit_color_3c_regions.py】读取彩色图像第10到12行、第40到45列的所有通道值。importcv2fish=cv2.imread("image//fish.jpg",-1)print(fish[10:12,40:45])单击此处输入(您的)智能图形项正文,文字是您思想的提炼,请尽量言简意赅的阐述观点,单击此处添加正文。结果解析:黄色部分为第10行的5个像素值,每个像素值均有三个数据,如[255,255,252]表示第10行的40列像素点,分别代表B值、G值、R值,[176,172,171]表示第10行的第41像素,绿底部分为第11行的5个像素点的值。其中[229,224,225]表示第11行的第40列像素点的值.输出结果:[[[255255252][176172171][146145147][225224233][248249255]][[229224225][176172177][131130139][248247255][244244255]]]

同学们可以将上述案例中的行号、

列号进行修改查看输出结果,对彩色图像可以修改通道号,可以添加或者删除通道号尝试,注意通道号的取值只能为0、1或者2,超出该范围将会报错。谢

谢!像素值修改修改灰度图像的像素值

数字图像中可以通过修改像素点的值来改变图像中局部位置的颜色。修改像素值是通过给指定像素位置赋新值来改变该像素点或者像素区域的颜色。修改灰度图像的像素值【例1.13modify_pixel.py】修改灰度图像gray_fish.jpg的第30行40列的像素值。importcv2fish=cv2.imread("image//gray_fish.jpg",0)print("修改前:",fish[30,40])fish[30,40]=0print("修改后:",fish[30,40])输出结果:修改前:254修改后:0

修改灰度图像的像素值【例1.14modify_pixels.py】将图像gray_fish.jpg的第10-13行、40-50列的像素值修改为0。importcv2fish=cv2.imread("image//gray_fish.jpg",0)print("修改前:",fish[10:13,40:50])fish[10:13,40:50]=0print("修改后:",fish[10:13,40:50])cv2.imshow("gray_fish_modify",fish)cv2.waitKey()cv2.destroyAllWindows()修改灰度图像的像素值例1.14输出图像结果解析:结果可以看到,第10-13行,第40-45列的所有值均被修改为0,从显示修改后图像1.7可以看到,图像上多了一条黑色的线,这条黑线的位置就是10-13行,40-45列。修改前:[[255172144229253247236251214236][224173132255252240171106100

97]

[223197138250214

94130193201207]]修改后:[[0000000000]

[0000000000]

[0000000000]]修改彩色图像的像素值【例1.15modify_color.py】修改彩色图像fish.jpg的像素值。importcv2fish=cv2.imread("image//fish.jpg",-1)cv2.imshow("before:",fish)fish[10:30,40:80,0:2]=0#将第10到30行、第40到80列的0、1所有通道修改为0cv2.imshow("after_0:",fish)cv2.waitKey()cv2.destroyAllWindows()修改彩色图像的像素值(a)(b)图1.8例1.15输出结果

图1.8(a)为原图,图1.8(b)是修改后的图像,左上角一块区域变为红色,原因是该区域0号通道即B通道、1号通道即G通道,这两个通道该区域的值均为0,表示没有蓝色和绿色,而只有R值,因此变为红色。修改彩色图像的像素值【例1.16modify_colors.py】修改彩色图像的所有通道值。importcv2fish=cv2.imread("image//fish.jpg",-1)cv2.imshow("before_0:",fish)fish[10:30,40:80]=0cv2.imshow("after_0:",fish)cv2.waitKey()cv2.destroyAllWindows()修改彩色图像的像素值(a)(b)例1.16输出结果

结果解析:图1.9(a)为修改像素值前的图像,语句fish[10:30,40:80]=0,将第10-30行、第40-80列的三个通道的像素值均修改为0,因此该区域颜色变为黑色,如图1.9(b)所示。谢

谢!生成具有艺术效果的图像知识目标技能目标01掌握不同类型的图像结构02掌握像素访问及像素值修改03掌握通道拆分合并04掌握图形绘制素质目标

培养学生关注细节的素养。处理像素级的任务可以培养学生严谨、细致的治学态度。文化认同与价值观塑造。图像处理可以用于传播和弘扬优秀文化。项目背景艺术领域医学领域安防及智能驾驶领域工业质检任务引入

作为一位专业的图像设计人员,您正面临一项挑战性的任务:对一幅名为“maple.jpg”的彩色图片进行细致的色彩调整,以实现特定的艺术效果。这幅图片以其丰富的自然色彩而闻名,特别是蓝色和绿色的色调,它们共同构成了画面的主要色彩基调。根据需求,您需要对这幅图片的色彩平衡进行巧妙的调整,减少蓝色和绿色,增加红色,以达到更加温暖、生动的艺术氛围。任务准备数字图像基础图像读取图像显示图像保存像素访问通道操作谢

谢!通道拆分通道操作

opencv读取的图像默认为BGR通道顺序,即图像是由B通道、G通道、R通道三个通道构成,在处理图像时,可根据需要对通道进行合并和拆分。达到处理不同通道的目的。针对BGR图像,可以分别拆分出其B通道、G通道、R通道,可以通过索引方式拆分,也可以通过函数方式拆分。以索引方式进行通道拆分的案例importcv2f=cv2.imread("image//fish.jpg")cv2.imshow("fish",f)b=f[:,:,0]#获取0号通道,即蓝色通道g=f[:,:,1]#获取1号通道,即绿色通道r=f[:,:,2]#获取2号通道

,即红色通道cv2.imshow("b",b)cv2.imshow("g",g)cv2.imshow("r",r)cv2.waitKey()cv2.destroyAllWindows()【例1.17chanel_split.py】分别输出三个通道的图像。结果解析:可见,拆分后每个通道均成为单通道图像,而单独输出三通道中的任一通道均为灰度图像如图所示,(a)为原始图像,(b)为b通道图像,(c)为g通道图像,(d)为r通道图像。(a)

(b)

(c)

(d)例1.17输出结果以索引方式进行通道拆分的案例通道拆分函数opencv提供了通道拆分函数cv2.split(img),函数格式如下:b,g,r=cv2.split(img)

该函数返回三个值,分别是通道b,通道g,通道r,因此用三个变量b,g,r接收三个通道矩阵的值。特别注意OpenCV中图像的通道顺序为BGR,因此返回的通道顺序也是b、g、r,即b是0号通道,g是1号通道,r是2号通道。等价于:b=cv2.split(img)[0]g=cv2.split(img)[1]r=cv2.split(img)[2]通道拆分函数【案例1.18split.py】使用通道拆分函数cv2.split()拆分通道。importcv2fish=cv2.imread("image//fish.jpg")b,g,r=cv2.split(fish)cv2.imshow("B",b)cv2.imshow("G",g)cv2.imshow("R",r)cv2.waitKey()cv2.destroyAllWindows()通道拆分函数结果解析:输出结果与案例1.17完全相同,只是使用函数使程序更简洁。(a)

(b)

(c)

(d)

例1.18输出结果谢谢!通道合并通道合并

通道合并是通道拆分的逆过程,通过合并通道可以将三个通道的灰度图像构成一幅彩色图像。通道合并函数Opencv提供了通道合并函数cv2.merge(),函数语法格式如下:merged_image=cv2.merge(mv)‌mv‌:一个包含多个单通道数组的列表或元组。例如[b,g,r]。‌merged_image‌:返回值,合并后的多通道图像通道合并案例importcv2lena=cv2.imread("image//fish.jpg")b,g,r=cv2.split(lena)bgr=cv2.merge([b,g,r])rgb=cv2.merge([r,g,b])grb=cv2.merge([g,r,b])cv2.imshow("lena",lena)cv2.imshow("bgr",bgr)cv2.imshow("rgb",rgb)cv2.imshow("grb",grb)cv2.waitKey()cv2.destroyAllWindows()【例1.19merge.py】使用通道合并函数cv2.merge()合并通道。通道合并案例(a)

(b)

(c)

(d)例1.19输出结果结果解析:图1.11(a)为原始图像,图1.11(b)为bgr顺序合并的图像,因原图的通道顺序为BGR,因此图(a)和(b)完全相同,图1.11(c)将r通道和b通道值进行了交换,因此颜色发生了变化,

图1.11(d)对原图三个通道顺序均进行了调整,因此颜色也发生了变化。谢

谢!图像显示图像显示

使用print()函数输出图像得到的是图像的像素值,如果要把图像显示出来,要使用cv2.imshow()函数,该函数格式如下:cv2.imshow(winname,mat)winname是窗口名字;mat是要显示的图像。图像显示案例importcv2img=cv2.imread("image\\fish.jpg",0)#灰度格式读取

cv2.imshow("gray_fish",img)img=cv2.imread("image\\fish.jpg",-1)#保持原格式不变

cv2.imshow("color_fish",img)【例1.2show_fish.py】分别用灰度图和彩色图像读取图像并显示。图像显示案例结果解析:在gray_fish窗体显示的为灰度图像,如图1.5所示,因为该图像读取是flag值设置为0,表示以灰度图像模式读取,在color_fish窗体中显示的是彩色图像,如图1.6所示,该图像在读取是flag值设置为-1,表示保持原图格式不变,因此为彩色图像。图1.5灰度图像显示结果图1.6彩色图像显示结果图像显示案例【例1.3close_windows.py】使用代码关闭窗体。importcv2img=cv2.imread("image\\fish.jpg",0)#灰度格式读取

cv2.imshow("gray_fish",img)img=cv2.imread("image\\fish.jpg",-1)#保持原格式不变

cv2.imshow("color_fish",img)cv2.waitKey()#图像停留cv2.destroyAllWindows()#释放窗口例1.2运行之后,两个图像需要分别手动单击关闭图像按钮才能关闭,一般在图像显示之后添加如下两条语句可实现浏览后自动关闭窗口:

运行程序后,按任意键所有程序打开的图像均会自动关闭,其中cv2.waitKey()可以设定图像停留的时间,参数为空表示一直等待,cv2.destroyAllWindows()释放所有窗口。图像显示案例谢

谢!图像保存图像保存函数OpenCV提供函数cv2.imwrite()用来保存图像,语法格式如下:retval=cv2.imwrite(filename,img[,params])retval是返回值,如果保存成功,返回True,否则返回False;filename要保存的目标文件的完整路径名以及扩展名;img是被保存的图像名;params是保存类型参数,可选。图像保存案例【例1.4save_fish.jpg】将image文件夹下的fish.jpg以灰度图像保存到image下,起名为gray_fish.jpg保存图像。importcv2fish=cv2.imread("image//fish.jpg",0)cv2.imwrite("image//gray_fish.jpg",fish)图像保存案例

程序运行后到image文件夹下查看,可以看到生成名为gray_fish.jpg的图像,因为读取的时候flag的值为0,表示以灰度图像读取,因此保存后的图像为灰度图像。原图保存的图像

如果要将图像仍以彩色格式保存到D盘下的image文件夹下,应该如何修改程序?谢

谢!任务实施任务实施

某图像设计人员需要对一副彩色图像maple.jpg进行色彩调整以达到需要的艺术效果,设计需求是减淡蓝色、绿色、增强红色。任务步骤(1)读取要进行处理的图片。(2)通道拆分。彩色图像一般包含三个通道,分别是B、G、R,代表蓝色通道、绿色通道、红色通道,对色彩的调整实际是对各通道像素值的调整,因此首先应该对该图像进行通道拆分。(3)颜色调整。分别修改三个通道的像素值,设计要求是减淡蓝色、绿色,我们可以将蓝色通道B和绿色通道G的值减少,将红色通道R的像素值增加,即可达到要求。(4)通道合并。项目代码importcv2importnumpyasnpimportrandom#1.读取图像image=cv2.imread('image//maple.jpg')#2.通道拆分B,G,R=cv2.split(image)#生成一个随机增减的像素值,范围再0-30beta=random.randint(0,30)B=np.clip((B-beta),0,255)#B通道像素值减去betaG=np.clip((G-beta),0,255)#G通道像素值减去betaR=np.clip((R+beta),0,255)#R通道像素值增加beta:项目代码:result=cv2.merge([B,G,R])cv2.imshow("image",image)cv2.imshow("B",B)cv2.imshow("G",G)cv2.imshow("R",R)cv2.imshow("result",result)cv2.waitKey()cv2.destroyAllWindows()项目代码【项目1.py】:

(a)

(b)

(c)

(d)

(e)

图(a)是原始图像,

图(b)是B通道图像,

图(c)是G通道图像,

图(d)是R通道图像,

图(e)是将修改后的B、G、R通道又合并后的图像。因为拆分后的三个通道的像素值各自做了修改,达到需求。谢谢!任务拓展任务拓展‌OpenCV提供了多种绘图函数,用于在图像上绘制不同的几何形状,包括直线、矩形、圆形、椭圆形以及多边形等。‌这些函数允许用户自定义形状的位置、颜色、线宽等属性,从而实现对图像的标注和分析。绘制直线函数Opencv提供了函数cv2.line()绘制直线,函数的语法格式如下:cv2.line(img,pt1,pt2,color[,thickness=1,lineType=LINE_8,shift=0])

img:输入图像,允许单通道灰度图像或多通道彩色图像。

pt1:线段第一个点的坐标,(x1,y1)。

pt2:线段第二个点的坐标,(x2,y2)。

color:绘制直线的颜色,(b,g,r)格式的元组,或者表示灰度值的标量。

thickness:绘制直线的粗细,默认值1px,-1表示内部填充。

lineType:绘制直线的线型,默认为LINE_8。

shift:点坐标的小数位数,默认为0。绘制直线案例importnumpyasnpimportcv2n=300#画布宽度及高度img=np.zeros((n+1,n+1,3),np.uint8)#生成黑色画布img=cv2.line(img,(0,0),(n,n),(255,255,0),3,cv2.LINE_AA)#绘制青色直线img=cv2.line(img,(0,80),(n,80),(0,255,255),1)#绘制黄色直线img=cv2.line(img,(80,0),(80,n),(255,0,255),6)#绘制紫色直线cv2.imshow('lines',img)cv2.waitKey(0)cv2.destroyAllWindows()【例1.20line.py】在黑色画布上绘制三条不同颜色不同粗细的直线绘制直线函数

第一次调用cv2.line()函数绘制了青色的直线,起点坐标为(0,0),终点坐标为(n,n),线条粗细为3;第二次调用cv2.line()函数绘制了黄色的直线,起点坐标为(0,80),终点坐标为(n,80),线条粗细为1;第三次调用cv2.line()函数绘制了紫色的直线,起点坐标为(80,0),终点坐标为(80,n),线条粗细为6;例1.20输出结果绘制矩形函数Opencv提供了函数cv2.rectangle()绘制矩形,函数的语法格式如下:cv2.rectangle(img,pt1,pt2,color[,thickness=1,lineType=LINE_8,shift=0])

img表示输入图像,允许单通道灰度图像或多通道彩色图像。

pt1表示矩阵第一个点的坐标,(x1,y1)格式的元组。

pt2表示与pt1成对角的矩阵第二个点的坐标,(x2,y2)格式的元组。

color表示绘制直线的颜色,(b,g,r)格式的元组,或者表示灰度值的标量。

thickness表示绘制直线的粗细,默认值1px,-1表示内部填充。

lineType表示绘制直线的线性,默认为LINE_8。

shift表示点坐标的小数位数,默认为0。绘制矩形案例importnumpyasnpimportcv2n=300#设置画布大小img=np.ones((n,n,3),np.uint8)*255b=np.random.randint(0,256)#随机生成b通道的值g=np.random.randint(0,256)#随机生成g通道的值r=np.random.randint(0,256)#随机生成r通道的值img=cv2.rectangle(img,(50,50),(n-100,n-50),(b,g,r),6)cv2.imshow('rectangle',img)cv2.waitKey(0)cv2.destroyAllWindows()【例1.21rectangle.py】在白色画布上绘制一个色彩随机的矩形。绘制矩形案例

如图1.14所示,因为程序中设置的颜色值(r,g,b)每次都是随机生成,所以每次运行后矩形框颜色各不相同。例1.21输出结果绘制圆形函数Opencv提供了函数cv2.circle()绘制圆,函数的语法格式如cv.circle(img,center,radius,color[,thickness=1,lineType=LINE_8,shift=0])

img表示输入图像,允许单通道灰度图像或多通道彩色图像。

center表示圆心点的坐标,(x,y)格式的元组。

radius表示圆的半径,整数。

color表示绘制直线的颜色,(b,g,r)格式的元组,或者表示灰度值的标量。

thickness表示绘制直线的粗细,默认值1px,-1表示内部填充。

lineType表示绘制直线的线性,默认为LINE_8。

shift表示点坐标的小数位数,默认为0。绘制圆形案例importcv2importnumpyasnpheight,width=500,500#设置画布宽度高度均为500canvas=np.ones((height,width,3),np.uint8)*255#创建一个白色背景的画布purple_color=(255,0,255)#紫色radius=80#圆的半径#计算圆心坐标,使其位于画布中心center_x=width//2#整除,表示在宽度的正中间center_y=height//2#整除,表示在高度的正中间cv2.circle(canvas,(center_x,center_y),radius,purple_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论