今天给大家介绍一下OpenCV基础操作中图片的读取与写出怎么进行。,文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。
cv2.imread函数语法如下:
cv2.imread(filename,flag=1)
cv2.imread函数的参数解释:
filename:所要读取图片的相对地址(与文件中open函数的读取方式一致)
flag:设置读取的格式,默认为1,表示按照BGR三通道的方式进行读取;如果为0,则以灰度图单通道的方式读取。
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)
这无非有是一种很好的图片格式转化的方法。
图片展示函数: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()
在敲这个代码的时候,犯了很多错误,一直以为是配置出了问题,然后一直在排查配置,结果是路径方式错误 ,,把 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基础操作中图片的读取与写出怎么进行相关的内容可以搜索亿速云之前的文章或者浏览下面的文章进行学习哈!相信小编会给大家增添更多知识,希望大家能够支持一下亿速云!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。