title: Opencv 入门篇学习记录(图片)

Opencv 入门篇学习记录(图片)

前言

很早以前就接触Python了,大学的时候还自学了一段时间去做了课设,写了一些最速梯度下降法、黄金分割法、步长优化什么的。现在已经忘得差不多了。。。
最近自学接触了OpenCV图像处理这个库,把自己的python学习过程记录一下。
相关内容我都写到代码里了,直接贴代码,也方便复现

图像入门基本函数:

# coding:utf-8import numpy as np
import cv2
import matplotlib.pyplot as plt# 加载图片
'''
imread(img_path,flag) 读取图片,返回图片对象img_path: 图片的路径,即使路径错误也不会报错,但打印返回的图片对象为None,路径前记得加rflag:cv2.IMREAD_COLOR,读取彩色图片,图片透明性会被忽略,为默认参数,也可以传入1cv2.IMREAD_GRAYSCALE,按灰度模式读取图像,也可以传入0cv2.IMREAD_UNCHANGED,读取图像,包括其alpha通道,也可以传入-1
'''
img = cv2.imread(r"C:\Users\Admin\Desktop\opencv\jumao-001.jpg")'''
cvtColor()函数,用于在图像中不同的色彩空间进行转换,用于后续处理
'''
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)'''
图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果。
cv2.threshold(img, threshold, maxval,type)
threshold是设定的阈值
maxval是当灰度值大于(或小于)阈值时将该灰度值赋成的值
type规定的是当前二值化的方式
'''
ret, img_threshold = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY)'''
imshow(window_name,img):显示图片,窗口自适应图片大小window_name: 指定窗口的名字img:显示的图片对象可以指定多个窗口名称,显示多个图片
'''
cv2.imshow("img", img)
cv2.imshow("thre", img_threshold)'''
waitKey(millseconds)  键盘绑定事件,阻塞监听键盘按键,返回一个数字(不同按键对应的数字不同)millseconds: 传入时间毫秒数,在该时间内等待键盘事件;传入0时,会一直等待键盘事件destroyAllWindows(window_name) window_name: 需要关闭的窗口名字,不传入时关闭所有窗口
'''
key = cv2.waitKey(0)
if key == 27:  # 按esc键时,关闭所有窗口print(key)cv2.destroyAllWindows()
'''
imwrite(img_path_name,img)img_path_name:保存的文件名,路径前记得加rimg:文件对象
'''
cv2.imwrite(r"C:\Users\Admin\Desktop\opencv\jumao-001.jpg", img)
cv2.imwrite(r"C:\Users\Admin\Desktop\opencv\jumao-002.jpg", img_threshold)

OpenCV画图方法

import numpy as np
import cv2 as cv'''
opencv常用画图方法
'''# 创建黑色的图像
img = np.zeros((512, 512, 3), np.uint8)
# 绘制一条厚度为5的蓝色对角线
#       窗口图像名 起点坐标   终点坐标   RGB颜色(蓝色)线宽
cv.line(img, (0, 0), (511, 511), (255, 0, 0), 5)
#           窗口图像名   起点       终点        RGB颜色(绿色) 线宽
cv.rectangle(img, (384, 0), (510, 128), (0, 255, 0), 3)  # 画法为左上往右下的对角线所形成的矩形
#               圆心       半径   RGB       是否填充
cv.circle(img, (447, 63), 63, (0, 0, 255), 2)  # -1:填充,其他值不填充,作为线宽参数,默认线宽为1
# 绘制多边形
pts = np.array([[10, 5], [20, 30], [70, 20], [50, 10]], np.int32)
# pts = pts.reshape((-1, 1, 2))
# ture:为封闭图形 False:为多段折线,首尾那段不连接
cv.polylines(img, [pts], True, (0, 255, 255))
# 绘制文字
# 字体设置
font = cv.FONT_HERSHEY_SIMPLEX
# 绘制函数 绘制窗口名 绘制内容  起始位置 字体设置 字体大小比例  RGB 绘制线条粗细程度 线性  图像数据原点True为左下角,否则左上角(默认)
cv.putText(img, 'OpenCV', (10, 500), font, 4, (255, 255, 255), 2, cv.LINE_AA)# 查看图像
cv.imshow('image', img)
k = cv.waitKey(0)
if k == 27:  # 等待ESC退出cv.destroyAllWindows()
elif k == ord('s'):  # 等待关键字,保存和退出cv.imwrite(r"C:\Users\Admin\Desktop\opencv\draw-001.jpg", img)cv.destroyAllWindows()

Opencv 入门篇学习记录(图片)相关推荐

  1. 【opencv入门篇】 10个程序快速上手opencv【上】

    导言:本系列博客目的在于能够在vs快速上手opencv,理论知识涉及较少,大家有兴趣可以查阅其他博客深入了解相关的理论知识,本博客后续也会对图像方向的理论进一步分析,敬请期待:) PS:官方文档永远是 ...

  2. Kafka入门篇学习笔记整理

    Kafka入门篇学习笔记整理 Kafka是什么 Kafka的特性 应用场景 Kafka的安装 单机版部署 集群部署环境准备 Kafka 2.x集群部署 Kafka 3.x集群部署 监听器和内外网络 K ...

  3. 【Opencv】【OpenCV实践】【OpenCV的使用学习记录】【fmt学习记录】

    [Opencv][OpenCV实践][OpenCV的使用学习记录][fmt学习记录] 0 前言 1 opencv使用说明 1.1 头文件的使用 1.2 CMakeLists.txt的使用 1.3 代码 ...

  4. 故障诊断基础入门篇学习路线

    写在前面 一个阶段的学习结束了,自己利用闲暇时间制作了关于轴承故障诊断基础入门系列的精品课程资源.以一个适合小白的视角结合具体的代码案例去讲解理论,也会启发学生对创新点的思考和挖掘,每一节内容的选取都 ...

  5. 有关路径规划入门的学习记录

    路径规划入门学习小记 路径规划算法实现 基于搜索的路径规划--Searching based 算法基础 BFS Breadth-First Search A*算法 算法实现 A*实现 BFS实现 基于 ...

  6. opencv入门 - 显示图像学习总结

    OpenCV的第一个小程序-读取图像并显示 首先新建一个VC++控制台项目如下图所示.本文项目名称helloOpenCV. 在主文件中添加如下代码: #include "stdafx.h&q ...

  7. ROS入门WIKI学习记录

    20180511 编写订阅器节点 代码解释 34 void chatterCallback(const std_msgs::String::ConstPtr& msg) 35 { 36 ROS ...

  8. OpenCV入门基础学习

    目录 一:OpenCV简介 二:OpenCV图像处理   图像 三:OpenCV图像处理   图像模式 四:OpenCV图像识别  图片操作 五:OpenCV图像处理   Mat类 六:OpenCV图 ...

  9. micro-app-vue2 vue3 超详细快速入门指南 学习记录

    micro-app-vue 快速入门指南 简介 micro-app是京东零售推出的一款微前端框架,它基于类WebComponent进行渲染,从组件化的思维实现微前端,旨在降低上手难度.提升工作效率.它 ...

最新文章

  1. android自定义折线图可左右滑动,25.Android自定义折线图,可左右滑动
  2. golang中的目录操作
  3. 怎么写显示商品图片_shopee商品描述怎么写,shopee商品排名靠前的是
  4. protobuf中 repeated[Ptr]Field的序列化
  5. 【Python 自然语言处理 第二版】读书笔记2:获得文本语料和词汇资源
  6. 艾伟_转载:[一步一步MVC]第五回:让TagBuilder丰富你的HtmlHelper
  7. Android recyclerView/listview的点击变色、点击换背景颜色
  8. OpenSSL再曝CCS注入漏洞-心伤未愈又成筛子
  9. 指尖上的艺术——如何运用代码发挥无限创意
  10. VS2013 生成sqlite3动态连接库
  11. Power Designer的4种模型文件
  12. 浅析阿里数据技术架构(下)大规模分布式知识图谱
  13. java language specification Java SE 8 Edition 中文版(第一章)
  14. String.split()与StringUtils.split()的区别
  15. python充分理解def语句
  16. Uni-App 简单引导页示例
  17. linux状态栏显示命令,Ubuntu状态栏显示网速CPU
  18. 我看所谓“汉语编程”
  19. Boundary Smoothing for NER
  20. Window安全策略的制定与实施

热门文章

  1. 怎么将不可编辑的英文PDF文档翻译成中文
  2. MAC地址是怎么保证全球唯一的
  3. python 做界面时如何使图片保持透明背景_Python matplotlib生成图片背景透明
  4. 粉笔公考——常识专项课——民法典
  5. 如何使用MScomm控件
  6. 835616-60-9,4-Fluoro-thalidomide用于补充CRBN蛋白的沙利度胺基脑啡肽配体
  7. 信号带e无法连接服务器,手机信号栏突然出现“E”是啥意思?原来是这个问题,望周知...
  8. wamp服务器离线 所有服务正常运行_你在使用开票软件的时候“突然”!发生“离线发票”我给你支几招...
  9. 光流传感器 定位精度_基于多传感器的无人机定位和避障技术研究
  10. 图片批处理工具:ImageSize Mac