opencv001图像处理(读取,显示,保存)

 由于pip总是更新不了,结束python学习后花了很长时间研究如何install opencv库,好在最后找到了一个很实用的博客,在Anaconda上创建了一个新环境,可以开始学习opencv啦!天知道我的import cv2没报错我有多么快乐!!!

这个是博客的链接!

1.读取图像

通过函数cv.imread实现

img = cv.imread(文件名,[,参数])

第二个参数是一个标志,它指定了读取图像的方式。

【1】cv.IMREAD_COLOR: 加载彩色图像,任何图像的透明度都会被忽视,如果不传参        数,这个值是默认值。
【2】cv.IMREAD_GRAYSCALE:以灰度模式加载图像。
【3】cv.IMREAD_UNCHANGED:加载图像,包括alpha通道
注意:这三个标志可以简化为 1 、 0 、 -1 。

注: 

要先说清楚文件的路径,而且路径里面不能有中文(maybe?没有中文了就没bug了好神奇)而且\t也会标红,唉,又把文件名改成est01了

img = "F:\est01\mh.jpg"

 最简单的却报了无数个错,真的怀疑人生了

1.OpenCV 读取图像文件,返回值是一个nparray 多维数组。OpenCV 对图像的任何操作,本质上就是对 Numpy 多维数组的运算。
2.OpenCV 中彩色图像使用 BGR 格式,而 PIL、PyQt、matplotlib 等库使用的是 RGB 格式。
3.cv2.imread() 如果无法从指定文件读取图像,并不会报错,而是数返回一个空矩阵。
4.cv2.imread() 指定图片的存储路径和文件名,在 python3 中不支持中文和空格(但并不会报错)。必须使用中文时,可以使用 cv2.imdecode() 处理,参见扩展例程。
5.cv2.imread() 读取图像时默认忽略透明通道,但可以使用 CV_LOAD_IMAGE_UNCHANGED 参数读取透明通道。
6.对于彩色图像,可以使用 flags=0 按照读取为灰度图像。
 

基本例程:

    # 1.1 图像的读取
    imgFile = "../images/imgLena.tif"  # 读取文件的路径
    img1 = cv2.imread(imgFile, flags=1)  # flags=1 读取彩色图像(BGR)
    img2 = cv2.imread(imgFile, flags=0)  # flags=0 读取为灰度图像

拓展历程:

指定大小
    # 1.7 图像显示(按指定大小的窗口显示图像)
    imgFile = "../images/imgLena.tif"  # 读取文件的路径
    img1 = cv2.imread(imgFile, flags=1)  # flags=1 读取彩色图像(BGR)
    
    cv2.namedWindow("Demo3", cv2.WINDOW_NORMAL)
    cv2.resizeWindow("Demo3", 400, 300)
    cv2.imshow("Demo3", img1)  # 在窗口 "Demo3" 显示图像 img1
    key = cv2.waitKey(0)  # 等待按键命令, 1000ms 后自动关闭
 网图
    # 1.2 从网络读取图像
    import urllib.request as request
    response = request.urlopen("https://profile.csdnimg.cn/8/E/F/0_youcans")
    imgUrl = cv2.imdecode(np.array(bytearray(response.read()), dtype=np.uint8), -1)
 中文
    # 1.3 读取中文路径的图像
    imgFile = "../images/测试图01.png"  # 带有中文的文件路径和文件名
    # imread() 不支持中文路径和文件名,读取失败,但不会报错!
    # img = cv2.imread(imgFile, flags=1)
    # 使用 imdecode 可以读取带有中文的文件路径和文件名
    img = cv2.imdecode(np.fromfile(imgFile, dtype=np.uint8), -1)

2.显示图像

cv.imshow(窗口名, 图像名)
m1 = cv.imread(img, 1)
cv.imshow("demo", m1)

例: 

cv.imshow("demo", m1)

3.窗口等待

cv.waitKey() 是一个键盘绑定函数。其参数是以毫秒为单位的时间。该函数等待任何键盘事件指定的毫秒。如果您在这段时间内按下任何键,程序将继续运行。如果 0 被传递,它将无限期地等待一次敲击键。

cv.waitKey(delay)

例: 

key = cv.waitKey(0)

4.成功显示啦!

import cv2 as cv
img = "F:\est01\mh.jpg"
m1 = cv.imread(img, 1)
cv.imshow("demo", m1)
key = cv.waitKey(0)

5.图像保存 

函数格式: 

retval = cv2.imwrite(filename, img [, paras])

 例:

img2 = "F:\est01\ele02.jpg"
m2 = cv.imread(img2, 1)
saveAdd = "F:\est01\savedele02.jpg"
cv.imwrite(saveAdd, m2)
  • filename:要保存的文件的路径和名称,包括文件扩展名

  • img:要保存的 OpenCV 图像,nparray 多维数组

  • paras:不同编码格式的参数,可选项

注: 

cv2.imwrite() 保存的是 OpenCV 图像(多维数组),不是 cv2.imread() 读取的图像文件,所保存的文件格式是由 filename 的扩展名决定的,与读取的图像文件的格式无关。

成功保存: 

 

  • 24
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值