学习opencv第一天

学习opencv第一天

1.cv2.imread获取图像

cv2.imread("lena.bmp",-1)

在 OpenCV 的 imread() 函数中,第二个参数是用来指定读取图像的方式。在这个参数的位置,使用 -1 可以表示以下的读取方式:

  • cv2.IMREAD_COLOR(也可以用整数值 1 表示):这种方式会加载图像的彩色部分,并且忽略透明度通道。也就是说,函数会将图像解码为一个三通道(BGR)彩色图像,默认情况下将透明度通道忽略。(默认)
  • cv2.IMREAD_UNCHANGED(也可以用整数值 -1 表示):这种方式会加载图像的所有通道,包括彩色通道和透明度通道。如果图像是包含透明度通道的,函数会解码为一个具有 alpha 通道的图像。
  • cv2.IMREAD_GRAYSCALE(也可以用整数值 0 表示):这种方式会将图像解码为灰度图像,即只有一个通道的图像。
  • cv2.IMREAD_ANYCOLOR:这种方式会加载图像的彩色部分,并将透明度通道忽略。与 cv2.IMREAD_COLOR 相同,但不推荐使用。
  • cv2.IMREAD_ANYDEPTH:这种方式会将图像解码为原始深度,包括可能存在的深度通道。不会对数据进行缩放或归一化。
  • cv2.IMREAD_REDUCED_GRAYSCALE_2:这种方式会将图像解码为灰度图像,并按比例缩小为原始图像的四分之一大小。
  • cv2.IMREAD_REDUCED_GRAYSCALE_4:这种方式会将图像解码为灰度图像,并按比例缩小为原始图像的十六分之一大小。
  • cv2.IMREAD_REDUCED_GRAYSCALE_8:这种方式会将图像解码为灰度图像,并按比例缩小为原始图像的六十四分之一大小。
  • cv2.IMREAD_REDUCED_COLOR_2:这种方式会加载图像的彩色部分,并按比例缩小为原始图像的四分之一大小。
  • cv2.IMREAD_REDUCED_COLOR_4:这种方式会加载图像的彩色部分,并按比例缩小为原始图像的十六分之一大小。
  • cv2.IMREAD_REDUCED_COLOR_8:这种方式会加载图像的彩色部分,并按比例缩小为原始图像的六十四分之一大小。

2.namedwindow函数,创建指定名称窗口

cv2.namedWindow("rlesson")

3.imshow()用来显示图像

cv2.imshow("lesson"lena )

4.waitKey()键入

retval = cv2.waitKey( [delay] )

retval 表示返回值。如果没有按键被按下,则返回-1;如果有按键被按下,则返回该按键的ASCI码。
delay 表示等待键盘触发的时间,单位是 ms。当该值是负数或者零时,表示无限等待。该值默认为0。

import cv2
lena=cv2.imread("lena.bmp")
cv2.imshow("demo", lena )
key=cv2.waitKey()
if key==ord('a'):
    cv2.imshow("PressA",lena)
elif key==ord('b'):
    cv2.imshow("PressB",lena)

5.destroyWindow()释放(销毁窗口)

cv2.destroyWindow("demo")

6.destroyAllWindows()释放所有窗口

cv2.destroyAllWindows()

7.保存图像

retval= cv2.imwrite( filename, img[,params] )
  • retval是返回值。如果保存成功,则返回逻辑值真(True);如果保存不成功,则返回逻辑值假(False)。

  • filename 是要保存的目标文件的完整路径名,包含文件扩展名

  • import cv2
    1ena=cv2 · imread ("lena.bmp")
    r=cv2 · imwrite (" result.bmp " , lena)
    

8.快速生成马赛克图像

face=np.random.randint(0,256,(180,100,3))

9.快速访问像素点

可以将二值图像理解为特殊的灰度图像 , 所以这里仅以灰度图像为例讨论像素点值的读取和修改 。
函数 item() 能够更加高效地访问图像的像素点 , 该函数的语法格式为 :

item( 行 , 列 )

函数 itemset() 可以用来修改像素值 , 其语法格式为 :

itemset ( 索引值 , 新值 )

10.图像通道拆分

b,g,r=cv2.split(img)
上述语句与如下语句是等价的:
b=cv2.split(a)[0]
g=cv2.split(a)[1]
r=cv2.split(a)[2]

11.通道合并

bgr=cv2.merge([b,g,r])//注意顺序
import cv2
lena=cv2.imread("lenacolor.png")
b,g,r=cv2.split(lena)
bgr=cv2.merge([b,g,r])
rgb=cv2.merge([r,g,b])
cv2.imshow("lena",lena)
cv2.imshow("bgr",bgr)
cv2.imshow("rgb",rgb)
cv2.waitKey()
cv2.destroyAllWindows()

12.获取图像属性

  • shape : 如果是彩色图像 , 则返回包含行数 、 列数 、 通道数的数组 ; 如果是二值图像或者灰度图像 , 则仅返回行数和列数 。 通过该属性的返回值是否包含通道数 , 可以判断一幅图像是灰度图像 ( 或二值图像 ) 还是彩色图像 。
  • size : 返回图像的像素数目 。 其值为 “ 行 × 列 × 通道数 ” , 灰度图像或者二值图像的通道数为 1 。
  • dtype : 返回图像的数据类型 。
import cv2
gray=cv2.imread("lena.bmp",0)
color=cv2.imread("lenacolor.png")
print("图像gray属性:")
print("gray.shape=",gray.shape)
print("gray.size=",gray.size)
print("gray.dtype=",gray.dtype)
print("图像color属性:")
print("color.shape=",color.shape)
print("color.size=",color.size)
print("color.dtype=",color.dtype)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值