OpenCV基础操作指南之图片的读取与写出

 更新时间:2022年01月09日 08:48:14   作者:代码骑士  
图像处理依赖于得到一幅图像(例如,一张照片和一个视频帧)并通过应用信号处理技术的“播放”(playing)来得到预期的结果,这篇文章主要给大家介绍了关于OpenCV基础操作指南之图片读取与写出的相关资料,需要的朋友可以参考下

1、进行图片读取的函数是:cv2.imread

        cv2.imread函数语法如下:

cv2.imread(filename,flag=1)

        cv2.imread函数的参数解释:

                filename:所要读取图片的相对地址(与文件中open函数的读取方式一致)

                flag:设置读取的格式,默认为1,表示按照BGR三通道的方式进行读取;如果为0,则以灰度图单通道的方式读取。

2、图片保存的函数cv2.imwrite:

          cv2.imwrite函数语法:

cv2.imwrite(filename,img)

                cv2.imwrite函数参数解释

                filename:要保存图片的名字,程序的相对地址。

                img:要保存的图片矩阵形式。

程序功能:将.py文件夹中的GBR格式图片转化成灰度图。 

 程序演示:

 程序代码:

import cv2
import numpy as np
Img=cv2.imread('1.jpg',0)
cv2.imwrite('1.jpg',Img)

如果想要改变图片的格式,也可以在保存图片时,将.jpg改为.png

这样在程序运行结束后在.py文件中会发现一张与1.jpg同样的图片1.png。

 

import cv2
import numpy as np
Img=cv2.imread('1.jpg',0)
cv2.imwrite('1.png',Img)

这无非有是一种很好的图片格式转化的方法。

3、图片的显示函数cv2.imshow

图片展示函数:cv2.imshow

函数cv2.imshow的语法:

cv2.imshow(name,img)

cv2.imshow函数的参数解释:

name:展示窗口的名字

img:图片的矩阵形式

图片延时函数cv2.waitKey

函数cv2.waitKey语法

cv2.waitKey(time)

cv2.waitKey函数参数解释:

time表示等待的时间,单位为毫秒。

这个函数可以这样理解,在time时间内,计算机会等待我们键盘上的命令,如果在time时间内程序没有等到按键指令,他会自动进入下一帧。因为这里是图片,没有下一帧,所以会自动关闭窗口。

这里需要注意的是,如果我们把time置为0,并不是等待0毫秒后进入下一帧,而是停止在当前帧,有按键才会进入下一帧,所以显示单张图片时,通常用

cv2.waitKey(0);

代码示例:

import cv2
import numpy as np
img=cv2.imread('1.jpg',cv2.IMREAD_COLOR)
cv2.imshow('image',img)
#为了图片长久的保存在程序窗口中,再加一个延时函数
cv2.waitKey(0);
cv2.imwrite('ba_ck_.png',img)
#如果使用了cv2.imshow函数,下面一定要跟着一个摧毁窗口的函数
cv2.destroyAllWindows()

程序改进(1):

上面这个程序中,显示完图片后,按下键盘上任意键,图片都会关闭。如果我们向按下特定建关闭程序的话,可以通过一个if语句来判断。如果按的不是q键,就一直处于while循环中,知道我们按下q键。

import cv2
import numpy as np
img=cv2.imread('1.jpg',cv2.IMREAD_COLOR)
cv2.imshow('image',img)
while 1:
    if cv2.waitKey(0)==ord('q'):
        break
    else:
        pass#continue
cv2.imwrite('ba_ck_.png',img)
#如果使用了cv2.imshow函数,下面一定要跟着一个摧毁窗口的函数
cv2.destroyAllWindows()

程序改进(2):

上述程序中,在我们按下q退出显示之后,程序会自动保存,若果我们想按下q直接退出,按下s退出并保存,需要再加一个if条件语句。

import cv2
import numpy as np
img=cv2.imread('1.jpg',cv2.IMREAD_COLOR)
cv2.imshow('image',img)
while 1:
    if cv2.waitKey(0)==ord('q'):
        break
    if cv2.waitKey(0)==ord('s'):
        cv2.imwrite('ba_ck_.png',img)
        break
#如果使用了cv2.imshow函数,下面一定要跟着一个摧毁窗口的函数
cv2.destroyAllWindows()

附、OpenCV:读取图片总结

在敲这个代码的时候,犯了很多错误,一直以为是配置出了问题,然后一直在排查配置,结果是路径方式错误 ,,把 Mat img = imread("C:\\Users\\sq.fu\\Desktop\\pic.jpg"); 这句写成了  Mat img = imread("C:\\Users\\sq.fu\\Desktop pic.jpg"); ,还好最后找出来了

#include <iostream>  
#include <opencv2\core\core.hpp>  
#include <opencv2\imgproc\imgproc.hpp>  
#include <opencv2\highgui\highgui.hpp>  
  
using namespace cv;  
  
void main( )  
{  
    Mat img = imread("C:\\Users\\sq.fu\\Desktop\\pic.jpg");  //  Mat img = imread("C:\\Users\\sq.fu\\Desktop\\pic.jpg");  
 
    namedWindow("test");  
   imshow("test",img);  
    waitKey(100);  
}  

总结

到此这篇关于OpenCV基础操作指南之图片的读取与写出的文章就介绍到这了,更多相关OpenCV图片的读取与写出内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python如何通过变量ID得到变量的值

    Python如何通过变量ID得到变量的值

    这篇文章主要介绍了Python如何通过变量ID得到变量的值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 使用python搭建代理IP池实现接口设置与整体调度

    使用python搭建代理IP池实现接口设置与整体调度

    在网络爬虫中,代理IP池是一个非常重要的组件,由于许多网站对单个IP的请求有限制,因此,我们需要一个代理IP池,在本文中,我们将使用Python来构建一个代理IP池,然后,我们将使用这个代理IP池来访问我们需要的数据,文中有相关的代码示例供大家参考,需要的朋友可以参考下
    2023-12-12
  • python使用信号量动态更新配置文件的操作

    python使用信号量动态更新配置文件的操作

    这篇文章主要介绍了python使用信号量动态更新配置文件的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • python linecache 处理固定格式文本数据的方法

    python linecache 处理固定格式文本数据的方法

    今天小编就为大家分享一篇python linecache 处理固定格式文本数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • PySpark和RDD对象最新详解

    PySpark和RDD对象最新详解

    Spark是一款分布式的计算框架,用于调度成百上千的服务器集群,计算TB、PB乃至EB级别的海量数据,PySpark是由Spark官方开发的Python语言第三方库,本文重点介绍PySpark和RDD对象,感兴趣的朋友一起看看吧
    2023-01-01
  • 用python分割TXT文件成4K的TXT文件

    用python分割TXT文件成4K的TXT文件

    ipod虽然很酷,但它的电子书功能却弱到了家,只支持看不到4K的txt格式,于是我只好用python写了个工具,来拆分我的txt文件,源码如下
    2009-05-05
  • Python中np.percentile和df.quantile分位数详解

    Python中np.percentile和df.quantile分位数详解

    分位数(Quantile)亦称分位点是指将一个随机变量的概率分布范围分为几个等份的数值点,下面这篇文章主要给大家介绍了关于Python中np.percentile和df.quantile分位数的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • python自动裁剪图像代码分享

    python自动裁剪图像代码分享

    这篇文章主要介绍了python自动裁剪图像代码分享,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Python使用requests模块发送http请求的方法介绍

    Python使用requests模块发送http请求的方法介绍

    Python Requests是一个 HTTP 库,它允许我们向 Web 服务器发送  HTTP 请求,并获取响应结果,本文将会详细介绍Python requests模块如何发送http请求,文中有相关的代码示例,需要的朋友可以参考下
    2023-06-06
  • python散点图双轴设置坐标轴刻度的实现

    python散点图双轴设置坐标轴刻度的实现

    散点图是一种常用的图表类型,可以用来展示两个变量之间的关系,本文主要介绍了python散点图双轴设置坐标轴刻度的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01

最新评论