OpenCV基础_小题狂做最基础篇

OpenCV基础_小题狂做最基础篇一.opencv是什么及其作用?OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和MacOS操作系统上。它轻量级而且高效—

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

 

一 . opencv是什么及其作用?

  OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法(百度百科)。

  鉴于本人的工作环境主要是采用python作为开发工具,故本篇博客是基于python来做的学习记录。

 

二 . 环境依赖和opencv包

  •   环境:python3.7+windows10
  •   包:opencv-python、opencv-contrib-python
  •   说明:装好python以后,直接在cmd里面使用pip install 即可,若遇见下载速度过慢或超时的情况,建议换个pip源,使用方式如:pip install package -i  https://pypi.tuna.tsinghua.edu.cn/simple/

 

三 . 基本使用

  前提:准备若干张图片到本地

OpenCV基础_小题狂做最基础篇                    OpenCV基础_小题狂做最基础篇                      OpenCV基础_小题狂做最基础篇

   都知道一张图片是由很多个像素点组成,对于计算机而言,最终呈现在用户面前的是由每个像素点的值所决定(0~255),0对应黑色,255对应白色。我们在生活中通常接触的都是彩色图片,由RGB三通道共同构成一张上面的彩色图片,每一个通道对应的像素值反映出其亮度(三个通道可以理解成三个矩阵)。而灰度图像通常只有一个颜色通道来表现。

 

1. 读取图片,将其转换为数组

from matplotlib import pyplot as pyl
import cv2
import numpy

img = cv2.imread("cat.jpg")  #img是一个numpy.ndarray对象,默认是以BGR三通道读取图片数据(三维数组)
#img_gray = cv2.imread("cat.jpg",cv2.IMREAD_GRAYSCALE) 以灰度图像方式读取图片数据(二维数组)

 

2. 数组数据转换

img_BGR = cv2.imread("cat.jpg")
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)  #将其转换为灰度的二维数组数据

 

3. 数组数据窗口展示

img = cv2.imread("cat.jpg")

cv2.imshow("IMage",img)
cv2.waitKey(0)          # 按任意键关闭窗口,cv2.waitKey(1000) 延时一秒关闭窗口
cv2.destroyAllWindows()

 

4. 图像保存

cv2.imwrite("mycat.jpg",img)

 

5. 图像的截取

# 其实本质就是对np数组进行操作
img = cv2.imread("cat.jpg")
cv2.imshow("IMage",img[:100,:200])  # 取前100行,前200列的像素作为图像展示

 

 6. BGR数据切片

img = cv2.imread("cat.jpg")

# 切片
b,g,r = cv2.split(img)   # 得到各自颜色通道的二维数组数据

# 合并
img = cv2.merge(b,g,r)   

 

 7 同样大小的数组像素值运算

img = cv2.imread("cat.jpg")
img_2 = numpy.copy(img)


# np相加,像素值只要超过255,就减掉255,比如257,结果就为2
print(img[:3,:3,0]+img_2[:3,:3,0] ) 

# cv2相加,像素值超过255,就等于255
print(cv2.add(img[:3,:3,0],img_2[:3,:3,0]))

 

8 图片的融合

img_cat = cv2.imread("cat.jpg")
img_dog = cv2.imread("dog.jpg")

ret = cv2.addWeighted(img_cat,0.2,img_dog,0.8,0)    # 数据后面的值决定图片融合和所占的权重
cv2.imshow("IMage",ret)
cv2.waitKey(0)          # 按任意键关闭窗口,cv2.waitKey(1000) 延时一秒关闭窗口
cv2.destroyAllWindows()

# 如果图片大小不一致,使用cv2.resize(img_xx,(300,200)) ————》转换为np.shape = 200,300的数组

 

9 图片的比例缩放

img_cat = cv2.imread("cat.jpg")

ret = cv2.resize(img_cat,(0,0),fx=3,fy=1) #横向拉长三倍
ret2 = cv2.resize(img_cat,(0,0),fx=3,fy=3) #图片扩大三倍

 

 结语:本来准备认真写一下结尾的,毕竟作为博客园的新人,写下第一篇学习笔记应当是值得纪念的一件事儿,不过想了想,这要是最后一篇那岂不是太尴尬了。嗯,作为一名不太合格的码农,我大多时候是很抗拒写笔记的,其实毕业工作也已经一年多了,一直也来也都知道一个好的学习习惯是多么重要。所以,我希望自己能改变的更快一点,能变得更加优秀,更加有底气的去尝试,去做自己觉得有意义真正想去做的事情。

                     —— 2019-09-10 00:14:45  

  

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/167250.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • laravel 5 自定义全局函数,怎么弄呢?

    laravel 5 自定义全局函数,怎么弄呢?

    2021年10月26日
  • Eureka工作原理

    Eureka工作原理上节内容为大家介绍了,注册中心Eureka产品的使用,以及如何利用Eureka搭建单台和集群的注册中心。这节课我们来继续学习Eureka,了解它的相关概念、工作流程机制等。Eureka作为SpringCloud体系中最核心、默认的注册中心组件,研究它的运行机制,有助于我们在工作中更好地使用它。Eureka核心概念回到上节的服务注册调用示意图,服务提…

  • python进阶(22)pydantic–数据类型校验[通俗易懂]

    python进阶(22)pydantic–数据类型校验[通俗易懂]pydantic库的作用pydantic库是一种常用的用于数据接口schema定义与检查的库。Pydantic在运行时强制执行类型提示,并在数据无效时提供用户友好的错误信息。pydantic安

  • python fileinput_Python中fileinput模块

    python fileinput_Python中fileinput模块fileinput模块可以对一个或多个文件中的内容进行迭代、遍历等操作。该模块的input()函数有点类似文件readlines()方法,区别在于:前者是一个迭代对象,即每次只生成一行,需要用for循环迭代。后者是一次性读取所有行。在碰到大文件的读取时,前者无疑效率更高效。用fileinput对文件进行循环遍历,格式化输出,查找、替换等操作,非常方便。【典型用法】importfileinputf…

  • elasticsearch(es)的安装-macOs

    elasticsearch(es)的安装-macOs前提:已经安装过jdk1.8java-version#查看jdk版本1.es的安装和访问es安装brewinstallelasticsearch#安装brewinfoelasticsearch#查看es信息brewservicesstartelasticsearch#启动浏览器输入:localhost:9200查看es2.kibana的安装和访问kibana可以通过可视化的界面操作访问eskibana安装brewinstallkiban

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号