关闭

【OpenCv-Python】一、Getting Started with Images

标签: OpenCv-Python中文文档图像识别OpenCV开源
77人阅读 评论(0) 收藏 举报
分类:

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 显示它时会产生一些问题。阅读
这些讨论内容,并且去尝试理解它。

1
0
查看评论

TensorFlow学习篇【1】Getting Started With TensorFlow

学习网址:https://www.tensorflow.org/get_started/get_started This guide gets you started programming in TensorFlow. Before using this guide, inst...
  • lingyu666hapy
  • lingyu666hapy
  • 2017-03-14 16:52
  • 723

【OpenCv-Python】二、Getting Started with Videos

开始使用视频 目标 学会读取视频、显示视频和保存视频 学会从摄像头中捕捉并显示它 你将要学习这两个函数:cv2.VideoCapture(), cv2.VideoWriter() 2.1 从摄像头中捕捉视频 通常,我们必须用摄像头捕捉实时图像。OpenCv 为此提...
  • vcx08
  • vcx08
  • 2018-01-08 12:28
  • 52

《Getting Started with WebRTC》第二章 WebRTC技术介绍

《Getting Started with WebRTC》第二章 WebRTC技术介绍 本章作WebRTC的技术介绍,主要讲以下的概念:   .  如何建立P2P的通信   .  有效的信令选项   .  关键API的关系 ...
  • fireroll
  • fireroll
  • 2015-03-12 21:50
  • 1693

LLVM每日谈之十九 LLVM的第一本系统的书<Getting Started with LLVM Core Libraries>

作者:史宁宁(snsn1984)LLVM终于有了一本系统的书了——《Getting Started with LLVM Core Libraries》。这本书号称是LLVM的第一本书,但是据说日本早就有两本日文的关于LLVM的书,这个了解的不多。不过可以肯定的是,这本书是英文表述的第一本书。这本书的...
  • snsn1984
  • snsn1984
  • 2014-11-05 09:59
  • 5276

2016.9.13 Programming for Everybody (Getting Started with Python)

传送门:https://www.coursera.org/account/accomplishments/certificate/JMA8ZGF6ZT6R
  • qq_33638791
  • qq_33638791
  • 2016-09-13 11:45
  • 440

Getting Started with LLVM Core Libraries阅读笔记

Getting Started with LLVM Core Libraries 目录 1 Build and Install LLVM2 External Projects3 Tools and Design4 Frontend5 LLVM IR6 Ba...
  • cteng
  • cteng
  • 2014-09-21 00:19
  • 2983

《getting started with p5.js》(中文版) 第一章 您好:了解p5.js

第一章 您好:了解p5.js
  • weixin_38082483
  • weixin_38082483
  • 2017-12-20 12:29
  • 255

使用MAT分析Android的内存

如果使用DDMS确实发现了我们程序中存在内存泄露,那如何定位到具体出现问题的代码片段,最终找到问题所在呢?如果从头到尾分析代码逻辑,那肯定会把人逼疯,特别是在维护别人写的代码的时候。这里介绍一个极好的内存分析工具Memory Analyzer Tool(MAT)。  ...
  • u011494050
  • u011494050
  • 2014-07-02 15:05
  • 1099

Best Machine Learning Resources for Getting Started

Best Machine Learning Resources for Getting Started by Jasonb on November 27, 2013 in Machine Learning 101, Resou...
  • hj_huangjun
  • hj_huangjun
  • 2014-01-22 10:43
  • 1430

JUCE

JUCE   JUCE (Jules' Utility Class Extensions)是由Raw MaterialSoftware发布的一套基于c++的跨平台应用程序框架类库(Windows, Mac,Linux)。JUCE的特殊之处在于其友好的用户界面以及强大的音频、图像
  • gxp
  • gxp
  • 2011-09-27 09:56
  • 7549
    个人资料
    • 访问:126505次
    • 积分:3214
    • 等级:
    • 排名:第12600名
    • 原创:187篇
    • 转载:4篇
    • 译文:9篇
    • 评论:33条
    RUNNING|~_~|My web
    微信公众号
    课程设计、视频资源、有料趣文
    Worldhello


    微信公众号:Worldhello
    期待您的关注!
    博客专栏
    最新评论