1.1读入图像

使用函数 cv2.imread() 读入图像。这幅图像应该在此程序的工作路径,或者给函数提供一个完整的路径,第二个参数是要告诉函数应该如何读取这幅图片。

  • cv2.IMREAD_COLOR:读取一副彩色图像。图像的透明度会被忽略,这是默认参数。
  • cv2.IMREAD_GRAYSCALE:以灰度模式读取图像
  • cv2.IMREAD_UNCHANGED:读入一副图像,并且包括图像的alpha通道
# -*- coding: utf-8 -*-
import numpy as np
import cv2 #加载一副灰色图片
img = cv2.imread('love.jpg',0)

1.2显示图像

使用函数 cv.imshow() 显示图像。窗口会自动调整为图像大小。第一个参数是图像窗口的名字,其次才是我们的图像。你可以创建多个窗口,只要你喜欢,但是必须给他们不同的名字

cv2.imshow('image',img)
cv2.waitKey(0) #如果没有这行代码,图像窗口则会无响应
cv2.destroyAllWindows()

cv2.waitKey() 是一个键盘绑定函数。需要指出的是它的时间尺度是毫秒级。函数等待特定的几毫秒,看是否有键盘输入。特定的几毫秒内,如果按下任意键,这个函数会返回按键的ASCII码值,程序将会继续运行。如果没有键盘输入,返回值为-1,如果没有

cv2.destroyAllWindows() 可以轻易销毁(释放资源)任何我们建立的窗口。如果你想销毁掉特定的窗口可以使用 cv.destroyWindow, 将你想删除的窗口名称作为参数传递

1.3保存图像

使用函数 cv.imwrite() 来保存一个图片。 第一个参数为文件名称,第二个参数是你想要保存的图片变量。

cv2.imwrite('gLove.png',img)

1.4总结

下面的程序会以灰度模式读取一副图片并且显示出来,如果你按‘s’ 键就会保存后退出,或者按下‘esc’键仅退出则不保存灰色图片。

import numpy as np
import cv2 #对原文档中代码做了部分修改 img = cv2.imread('love.jpg',0)
cv2.imshow('image',img)
k = cv2.waitKey(0) & 0xFF
if k == 27:
cv2.destroyAllWindows()
elif k == 83 or k == 115:
cv2.imwrite('gLoveW.png',img)
cv2.destroyAllWindows()
else:
print('输入错误,请按 ESC 或者 S')
cv2.destroyAllWindows()

警告

如果你用的是64位的系统,你需要将 k = cv2.waitKey(0) 这里改成 k = cv2.waitKey(0) & 0xFF

使用 Matplotlib

Matplotlib 是一个 Python 的一个绘图库,它给使用者提供了各种各样的绘图方法(函数)。你将要在接下来的文章中看到它们。在这里,你将学习如何用Matplotlib 显示图像。你使用Matplotlib 能够缩放图像,保存图像等。

import numpy as np
import cv2
from matplotlib import pyplot as plt img = cv2.imread('love.jpg',0)
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([]) #在x轴 y轴上隐藏刻度值
plt.show()

参阅

在Matplotlib 中有大量的绘图选项。更多细节请参考Matplotlib 文档。另外,我们会陆续了解一些。

警告

通过 OpenCv 加载彩色图像时是使用的 BGR 模式。但是Matplotlib 显示图像使用的 RGB 模式。 所以如果图像是用 OpenCv 读取的,
那么彩色图像使用Matplotlib不会正确的显示.详情请参阅练习。

附加资源

1.Matplotlib Plotting Styles and Features

练习

1.当你尝试使用 OpenCv 加载一个彩色图像并且使用 Matplotlib 显示它时会产生一些问题。阅读

这些讨论内容,并且去尝试理解它。

【OpenCv-Python】Getting Started with Images的更多相关文章

  1. 【leetcode❤python】Sum Of Two Number

    #-*- coding: UTF-8 -*- #既然不能使用加法和减法,那么就用位操作.下面以计算5+4的例子说明如何用位操作实现加法:#1. 用二进制表示两个加数,a=5=0101,b=4=0100 ...

  2. 【OpenCV开发】使用OpenCV的OpenCL(ocl)模块

    参加OpenCV的OpenCL模块(以下称OCL)移植工作已经有2个月了.这里我说移植而不是开发,是因为大部分OCL模块的函数都是从已经很成熟的GPU模块移植过来的.于是目前阶段OCL模块所支持的函数 ...

  3. 【Beginning Python】抽象(未完)

    [懒惰即是美德] 抽象意味着良好的可读性:说明你在努力做什么,而不是给出你正在如何做的细节. [抽象和结构] 程序应该是非常抽象的,就像“下载网页.计算频率.打印每个单词的频率”一样易懂.翻译成程序就 ...

  4. 【opencv基础】测量运行时间的函数getTickCount/getCPUTickCount/getTickFrequency

    函数的计算结果类型是double,单位是秒. 要使用更精确的计时,就需要使用getCPUTickCount(),不过现代计算机CPU的频率会随着负载而变化所以没大有必要使用该函数,可以参看函数的介绍[ ...

  5. 【Mac + Python】苹果系统之安装Python3.6.x环境

    一.打开终端 输入:uname -a  ,查看电脑系统位数. 输入:python,查看mac系统python版本. 二.为了以后切换版本方便,安装pyenv进行版本切换以及升级. 参考文章:<M ...

  6. 雕刻效果的实现【OpenCV+QT】

    雕刻能够区分为凸雕和凹雕. 凸雕基右下角的点减去左上角的点. 凹雕是左上角的点减去右下角的点. [效果图] 由于进行了缩放.效果看起来差一些.

  7. 【leetcode❤python】 1. Two Sum

    #-*- coding: UTF-8 -*- #AC源码[意外惊喜,还以为会超时]class Solution(object):    def twoSum(self, nums, target):  ...

  8. 【leetcode❤python】 58. Length of Last Word

    #-*- coding: UTF-8 -*-#利用strip函数去掉字符串去除空格(其实是去除两边[左边和右边]空格)#利用split分离字符串成列表class Solution(object):   ...

  9. 【leetcode❤python】 8. String to Integer (atoi)

    #-*- coding: UTF-8 -*-#需要考虑多种情况#以下几种是可以返回的数值#1.以0开头的字符串,如01201215#2.以正负号开头的字符串,如'+121215':'-1215489' ...

  10. 【虫师Python】第二讲:元素定位

    一.六种定位方式 1.id 2.name 3.class name 4.tag name:定位标签 5.link text:定位一个链接,如果是中文,需要在代码文最前面加一句I话|:#coding=u ...

随机推荐

  1. day49-线程-事件

    #1.Event里面有一个标志flag,当e = Event()刚创建的时候,flag=False,阻塞,这个时候,e.is_set()也是等于False,阻塞. #e.set()让flag变成非阻塞 ...

  2. collection-time-os-sys-json模块

    一.collections模块 美 [kə'lekʃənz] ,收集,收藏 在内置数据(dict  list  set  tuple)的基础上,collections模块海提供了几个常用的数据类型:c ...

  3. Opencv笔记(九)——图像阈值

    学习目标: 学习简单阈值,自适应阈值,Otsu's 二值化等 学习函数cv2.threshold,cv2.adaptiveThreshold 等. 一.简单阈值 与名字一样,这种方法非常简单.但像素值 ...

  4. 【Python杂货铺】速学python基础

    "人生苦短,我学python"是编程届的名言.用python写小脚本的便捷性,让很多其他语言的学习者把python当作辅助语言.拥有了某一个语言的功底,再来学习另外一种语言应该是十 ...

  5. sha1和md5的区别

    Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射,也就是,散列值的空 ...

  6. D. Almost All Divisors

    We guessed some integer number xx. You are given a list of almost all its divisors. Almost all means ...

  7. RHEL安装rails后启动报错

    [root@redhat7 demo]# rails server/usr/local/rvm/gems/ruby-2.4.1/gems/bundler-1.16.0.pre.2/lib/bundle ...

  8. springboot整合mybatis报错:Invalid default: public abstract java.lang.Class org.mybatis.spring.annotation...

    <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis- ...

  9. Tricks of Android's GUI

    Tricks of Android's GUI */--> Tricks of Android's GUI 1 layoutweight In LinearLayout, the default ...

  10. [LC] 127. Word Ladder

    Given two words (beginWord and endWord), and a dictionary's word list, find the length of shortest t ...