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

目录
  • 1、进行图片读取的函数是:cv2.imread
  • 2、图片保存的函数cv2.imwrite:
  • 3、图片的显示函数cv2.imshow
  • 附、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图片的读取与写出内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python使用opencv读取图片的实例

    安装好环境后,开始了第一个Hello word 例子,如何读取图片,保存图品 import cv2 import numpy as np import matplotlib.pyplot as plt #读取图片代码 img = cv2.imread('test.jpg',cv2.IMREAD_GRAYSCALE) #IMREAD_COLOR = 1 #IMREAD_UNCHANGED = -1 #展示图片 cv2.imshow('image',img) cv2.waitKey(0) cv2.d

  • OPENCV批量读取图片实现方法

    如下所示: #include<opencv2/opencv.hpp> using namespace cv; using namespace std; int main() { int num=4;//读取图片数量: char filename[100]; char windowname[100]; IplImage* pScr; unsigned char *Readfigsmethod1(int num);// 读入num个图片 { for (int i = 1; i <= num;

  • OpenCV 使用imread()函数读取图片的六种正确姿势

    经常看到有人在网上询问关于imread()函数读取图片失败的问题.今天心血来潮,经过实验,总结出imread()调用的四种正确姿势. 通常我要获取一张图片的绝对路径是这样做的:在图片上右键--属性--安全--对象名称.然后复制对象名称就得到了图片的绝对路径. 如图: 然而这样得到的路径直接复制粘贴到vs里面会直接报错,如下: 可以看出我们获取的绝对路径的表示方法是单右斜线形式的.显然opencv的imread()不支持这种方式.但是!!!经过实验发现imread()除了不支持单右斜线形式,其他斜

  • python解决OpenCV在读取显示图片的时候闪退的问题

    利用OpenCV练习读取图片的时候,图片总是一闪而过,不利于观察,这个时候需要利用到waitKey函数. waitKey函数:用来等待按键,当用户按下按键后,该语句会被执行,并获取返回值. 语法格式为retval=cv2.waitKey([delay]) retval:表示返回值: delay:表示等待按键触发的时间,单位是ms: 下面是简单的例子展示: import cv2 lena=cv2.imread("D:\pmjcv\lena.bmp") cv2.namedWindow(&q

  • OpenCV读取与写入图片的实现

    1.读取图片 cv2.imread(filename, flags) -filename: 文件名称 -flags: 0 读入灰度图片,1 读入彩色图片 cv2.imshow(winname, mat) -winname: 窗口名字 -mat: 要展示的图片矩阵 cv2.waitKey(0):暂停程序,这样才能显示图片 import cv2 img = cv2.imread("img.jpg", 1) cv2.imshow('img', img) cv2.waitKey(0) 2.图片

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

    目录 1.进行图片读取的函数是:cv2.imread 2.图片保存的函数cv2.imwrite: 3.图片的显示函数cv2.imshow 附.OpenCV:读取图片总结 总结 1.进行图片读取的函数是:cv2.imread cv2.imread函数语法如下: cv2.imread(filename,flag=1) cv2.imread函数的参数解释: filename:所要读取图片的相对地址(与文件中open函数的读取方式一致) flag:设置读取的格式,默认为1,表示按照BGR三通道的方式进行

  • go语言中json数据的读取和写出操作

    go自带json库,在使用时需要通过 import "encoding/json"来导入该库. 在读取和写入json数据之前需要定义相关的结构体来对应被操作的json数据的格式,并且结构体中需要导出或导入的变量首字母大写. 其中,json.Marshal()用于将一个对象转换为json格式的字节数组,json.Unmarshal()用于将json格式的字节数组转换为一个对象. 具体使用示例如下所示: 首先,定义结构体: type Com struct { Name string Nod

  • python通过opencv实现批量剪切图片

    上一篇文章中,我们介绍了python实现图片处理和特征提取详解,这里我们再来看看Python通过OpenCV实现批量剪切图片,具体如下. 做图像处理需要大批量的修改图片尺寸来做训练样本,为此本程序借助opencv来实现大批量的剪切图片. import cv2 import os def cutimage(dir,suffix): for root,dirs,files in os.walk(dir): for file in files: filepath = os.path.join(root

  • python PIL和CV对 图片的读取,显示,裁剪,保存实现方法

    PIL 图片操作 读取图片 img = Image.open("a.jpg") 显示图片 im.show() # im是Image对象,im是numpy类型,通过Image.fromarray(nparr, mode='RGB')函数转换为Image对象 图片的size (width, height) = img.size 图片的模式 mode = img.mode 截区域 img_c = img.crop(x1,y1,x2,y2) 裁剪图片 img = img.resize((siz

  • Opencv图像处理:如何判断图片里某个颜色值占的比例

    一.功能 这里的需求是,判断摄像头有没有被物体遮挡.这里只考虑用手遮挡---->判断黑色颜色的范围. 二.使用OpenCV的Mat格式图片遍历图片 下面代码里,传入的图片的尺寸是640*480,判断黑色范围. /* 在图片里查找指定颜色的比例 */ int Widget::Mat_color_Find(QImage qimage) { Mat image = QImage2cvMat(qimage);//将图片加载进来 int num = 0;//记录颜色的像素点 float rate;//要计

  • OpenCV基础HSV颜色空间*args与**kwargs滑动条传参问题

    目录 一.基础理论 1.Hue(色相) 2.Value(明度) 3.Saturation(饱和度) 二.hsv三通道及单通道效果 三.*args && **kwargs 四.滚动条控制h.s.v(min && max) 1.创建滚动条 2.回调函数 -- 阈值设置 3.回调函数 -- 感兴趣值 参考资料 一.基础理论 HSV:HSV是一种为了加快调色效率,且易于理解的概念. Hue:色相(具体的颜色) Saturation:饱和度.色彩纯净度 Value:明度 1.Hue(

  • Android OpenCV基础API清晰度亮度识别检测

    目录 背景 基础知识 主要Api - 加载图片 imread Utils.bitmapToMat 主要API - 写入图片 端侧常用分析方法 亮度检测 清晰度检测 最后 背景 工作中遇到业务诉求是通过OpenCV对图片进行一些判断操作和优化,这里是看了部分不错的文章,希望总结一个自己的学习过程,温故而知新,有不对的地方可以评论区指出,小白学习海涵. 基础知识 Mat在OpenCV中是非常重要的存在,后续各个API都是在Mat的基础上去做文章,Mat 是Matrix(矩阵)的缩写 ... inli

  • iOS 沙盒图片保存读取实例

    实例如下所示: //保存图片 -(void)saveImageDocuments:(UIImage *)image{ //拿到图片 UIImage *imagesave = image; NSString *path_sandox = NSHomeDirectory(); //设置一个图片的存储路径 NSString *imagePath = [path_sandox stringByAppendingString:@"/Documents/test.png"]; //把图片直接保存到

  • 使用Python opencv实现视频与图片的相互转换

    因为最近要经常转换数据集进行实验,因此记录一下. 1.视频转图片 即为将视频解析为一帧一帧的图片: import cv2 vc=cv2.VideoCapture("/home/hqd/PycharmProjects/1/1/19.MOV") c=1 if vc.isOpened(): rval,frame=vc.read() else: rval=False while rval: rval,frame=vc.read() cv2.imwrite('/home/hqd/PycharmP

  • opencv转换颜色空间更改图片背景

    本文实例为大家分享了opencv转换颜色空间更改图片背景的具体代码,供大家参考,具体内容如下 思路: 1.将BGR转换为HSV颜色空间 2.设置掩模 3.位运算 这里以更改摩托罗拉logo背景为例,图片在必应图片搜索得知,具体代码如下: import numpy as np import cv2 from imageio import imread import matplotlib.pyplot as plt def show(img,winname = "img"): cv2.na

随机推荐