OpenCV之图像的读入、显示、保存——python/C++实现

注1:python3实现是基于OpenCV3.4.4      , C++实现是基于OpenCV2.4.9

 

一、Python实现

首选导入python接口的OpenCV模块: import cv2

读入图像:使用cv2.imread()函数读入图像,不支持中文读取路径

显示图像:使用cv2.imshow()函数显示图像

保存图像:使用cv2.imwrite()函数保存图像,不支持中文参数命名

实现代码:

import cv2

img = cv2.imread('timg.jpg', 0)   #第二个参数取值为0,始终将图像转化成灰度再返回
cv2.namedWindow('image', cv2.WINDOW_NORMAL)   #创建一个可以调整大小的窗口
cv2.imshow('image', img)      #显示图像
k = cv2.waitKey(0)    #键盘绑定函数,参数设为0,它将无限期的等待键盘输入
if k == 27:           #等待ESC键退出
    cv2.destroyAllWindows()    #删除任何我们创建的窗口
elif k == ord('s'):            #等待s键按下
    cv2.imwrite('messigray.png', img)
    cv2.destroyAllWindows()    #删除任何我们创建的窗口

原始图像:

OpenCV之图像的读入、显示、保存——python/C++实现_第1张图片

显示图片:

OpenCV之图像的读入、显示、保存——python/C++实现_第2张图片

执行保存命令保存的图像也是上图模式

 

二、C++实现

#include
using namespace cv;

void main()
{
	Mat img = imread("timg.jpg");  //此处不设置第二个参数,默认值为1,故读入总是转换图像到彩色再返回
	Mat srcGray;  
	namedWindow("image", WINDOW_NORMAL); //创建可以自己调节大小的窗口,第二参数说明是自己可以调节大小
	cvtColor(img, srcGray, CV_RGB2GRAY);   //将彩色图像转换成灰度图像
	imshow("image", srcGray);
	imwrite("messigray.png", srcGray);  //第一个参数是文件名,要带上文件的格式即后缀。
	waitKey();
}

显示如上图

 

三、补充知识点

                                        在OpneCV读入图像后,为什么使用Matplotlib库中的函数显示会出现变色呢?

      python下,Matplotlib是python的一个绘图库,里头有各种各样的绘图方法。在彩色图像使用OpenCV加载时是BGR模式,但是Matplotlib是RGB模式,所以彩色图像如果已经被OpenCV读取,那他在使用Matplotlib显示时,将不会被正确显示。下面是在OpenCV读取图像后,使用Matplotlib中的pylab函数正确显示图像的结果。

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread("timg.jpg")
b,g,r = cv2.split(img)     # split()函数用于将一个多通道数组分离成几个单通道数组
img2 = cv2.merge([r,g,b])  # merge()函数用于将多个单通道数组合并成一个多通道的数组,split的逆操作

cv2.imshow('bgr image', img)   # 期望显示的图像
cv2.imshow('rgb image', img2)  # 期望显示的图像变色了
cv2.waitKey(0)
cv2.destroyAllWindows()

plt.figure(figsize=(10,8))  #设置显示窗口大小
plt.subplot(1,2,1), plt.imshow(img)   # 期望显示的图像变色了
plt.subplot(1,2,2), plt.imshow(img2)  # 图像正确显示:期望显示的图像
plt.show()


  • OpenCV显示的正常图片和(不是BGR而是RGB)变色的图像

        

  • 使用matplotlib中的函数显示的图片

OpenCV之图像的读入、显示、保存——python/C++实现_第3张图片

你可能感兴趣的:(OpenCV,图像读入显示保存,python,C,BGR/RGB)