当前位置: 首页 > news >正文

Opencv[一]

opencv笔记:

概述:

俄罗斯团队开发的,==计算机视觉处理开源软件库==

优点:

效率高

跨平台

丰富的API

安装opencv

pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple

图片背后的原理

==默认颜色是RGB格式==

像素是组成图像的最小单位,可以理解成一个个“小色块”。每个像素是8位图像,0-255。

图片-----》RGB格式===三通道

创建虚拟环境

创建虚拟环境

conda create -n 环境名 python=版本

2、创建项目绑定环境

open_study

3、绑定项目和环境

绝对路径和相对路径

常用数据源

1. 阿里云镜像:https://mirrors.aliyun.com/pypi/simple/
2. 清华大学镜像:https://pypi.tuna.tsinghua.edu.cn/simple
3. 豆瓣镜像:https://pypi.doubanio.com/simple/
4. 中科大镜像:https://pypi.mirrors.ustc.edu.cn/simple/
5. 华为云镜像:https://mirrors.huaweicloud.com/repository/pypi/simple/
6. 腾讯云镜像:https://mirrors.cloud.tencent.com/pypi/simple/
7. 网易镜像:http://mirrors.163.com/pypi/simple/
8. 中国科学技术大学镜像:https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/
9. 北京理工大学镜像:https://pypi.bfsu.edu.cn/simple/
10. 西南大学镜像:https://pypi.swu.edu.cn/simple/
11. 南京大学镜像:https://mirrors.nju.edu.cn/pypi/simple/
12. 山东理工大学镜像:https://pypi.sdutlinux.org/simple/
13. 中国科学院深圳先进技术研究院镜像:https://pypi.sztu.edu.cn/simple/
14. 东北大学镜像:https://pypi.neu.edu.cn/simple/
15. 西北大学镜像:https://mirrors.nwafu.edu.cn/pypi/web/simple/
16. 北京师范大学镜像:https://pypi.bnu.edu.cn/simple/
17. 华中科技大学镜像:https://pypi.hustunique.com/simple/
18. 武汉理工大学镜像:https://pypi.whut.edu.cn/simple/
19. 华南理工大学镜像:https://pypi.sysu.edu.cn/simple/
20. 上海交通大学镜像:https://pypi.sjtug.sjtu.edu.cn/simple/

查看图片形状

original_img.shape
​

(735, 690, 3)

高,宽 ,通道数

单通道和三通道

img_gray = cv2.cvtColor(original_img,cv2.COLOR_BGR2GRAY)

关键知识点

视频=======》图片====》三维数组(矩阵)=====》像素点组成======》0到255的数字====》

常用API

1、创建窗口

namedWindow(str:winname,是否改变大小)

imread(path:str,0/1)

imshow(name:str,mat/ndarray/numpy)

imwrite('文件名',mat/ndarray)

np.zeros()

np.random.randint()

参考代码

import cv2
import numpy as np
​
'''
创建窗体
1、不允许修改窗体大小
0、可以运行修改
'''
def one():cv2.namedWindow('name',1)img_source = cv2.imread('22.jpg')# 增 删  改 查cv2.imwrite('zj.jpg',img_source)
​
# 创建全黑的图像
def black_img():print("black_img")result = np.zeros((500,250,3),dtype=np.uint8)print(type(result))'''显示,第二个参数'''cv2.imshow('black',result)print(100 * '*')cv2.waitKey(0)cv2.destroyAllWindows()
# 随机填充
def random_full():print("random_full")result = np.random.randint(0,255,(300,300,3),dtype=np.uint8)print(type(result))print(result.shape)'''显示,第二个参数'''cv2.imshow('random_full', result)print(100 * '*')cv2.waitKey(0)cv2.destroyAllWindows()
​
# 切片
def cut_img():# 原图img_source = cv2.imread("22.jpg")print(img_source.shape)img_cut = img_source[0:100,100:300]# 原图cv2.imshow('img_source', img_source)# 切片cv2.imshow('img_cut', img_cut)print(100 * '*')cv2.waitKey(0)cv2.destroyAllWindows()
​
if __name__ == '__main__':cut_img()
cv2.waitkey(毫秒数)
cv2.destroyAllWindows

绘制形状

参考代码:

'''
绘制形状
'''
import cv2
def draw_line():# 读取图片img_source = cv2.imread('zj.jpg')# 注意颜色 bgr (红色) 我们认知的范围 rgb,但是程序opencv的颜色是bgr格式cv2.line(img_source,(300,300),(100,0),(0,0,255),2)cv2.imshow('img_source',img_source)# 等待cv2.waitKey(0)# 销毁cv2.destroyAllWindows()#  绘制圆形
def draw_circle():img_source = cv2.imread('zj.jpg')#获取高和宽height,width = img_source.shape[0],img_source.shape[1]#找到中心点center_x,center_y = int(height/2),int(width/2)# -1实心圆cv2.circle(img_source,(center_x,center_y),100,(0,255,0),-1)cv2.imshow('circle', img_source)# 等待cv2.waitKey(0)# 销毁cv2.destroyAllWindows()# 矩形右下角
def draw_rect():# 获取高和宽img_source = cv2.imread('zj.jpg')height, width = img_source.shape[0], img_source.shape[1]# 两个坐标点end_point=(width,height)start_point=[width-100,height-100]#绘制矩形cv2.rectangle(img_source,start_point,end_point,(255,0,0),2)cv2.imshow('circle', img_source)# 等待cv2.waitKey(0)# 销毁cv2.destroyAllWindows()# 写字
def write_font():img_source = cv2.imread('zj.jpg')pt = (300,300)# fontface: 字体的样式 楷体,宋体cv2.putText(img_source,'day day up',pt,cv2.FONT_HERSHEY_COMPLEX,0.5,(0,0,200),2)cv2.imshow('circle', img_source)# 等待cv2.waitKey(0)# 销毁cv2.destroyAllWindows()
​​
if __name__ == '__main__':# 调用# draw_line()# draw_circle()write_font()
​
​

==注意坐标==

图像默认的是 高和宽

但是绘制图的时候,注意 高是y,宽是x

练习题

灰度实验

将三通道转换为单通道。

补充

import cv2
img = cv2.imread('1.jpg')
# 查看第(100,100)像素的B通道值
img[100,100,2] 
img.item((100,100,2))
# 修改
img[100,100,2]=(233,123,23)
img.itemset((100,100,2),91)
​
#像素总数
print(img.size)
​
#获取某一个通道数组
b,g,r=cv2.split(img)
b1 =img[:,:,0]
​
#设置边框
img1 = cv2.copyMakeBorder(img,2,2,2,2,cv2.BORDER_CONSTANT,value=(255,255,255)) # mat,上下左右,样式,颜色(缺一不可)
cv2.nameWindows('img',cv2.WINDOW_NORMAL)
cv2.imshow('img',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
​
​
http://www.lryc.cn/news/609828.html

相关文章:

  • # 自动定时运行Python爬虫脚本教程(Windows任务计划程序)
  • 项目实战二:RPC
  • 17.6 超拟人大模型CharacterGLM技术解析:92.7%角色一致性+虚拟偶像互动提升300%,如何吊打GPT-4?
  • C++-异常
  • Python----大模型(量化 Quantization)
  • MySQL详解(一)
  • 从零开始的云计算生活——项目实战
  • 商标续展如果逾期了还有办法补救吗?
  • 消息系统技术文档
  • 学习嵌入式第十九天
  • 系统一个小时多次Full GC,导致系统线程停止运行,影响系统的性能,可靠性
  • 靶场(二十八)---小白心得靶场体会---Mantis
  • 前端VUE基础环境搭建
  • STM32_Hal库学习SPI
  • ctfshow:pwn85(高级ROP 64 位 Partial-RELRO)、pwn141
  • 探访WAIC2025:当AI成为双刃剑,合合信息如何破解真假难题
  • ZYNQ-按键消抖
  • 如何在 Ubuntu 24.04 LTS 上安装 Docker
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现路口车辆速度的追踪识别(C#代码UI界面版)
  • Apache Spark 的结构化流
  • bypass
  • 基于PSO-NSGAIII混合优化的生产调度算法matlab仿真,输出甘特图,对比PSO和NSGAIII
  • 开源的现代数据探索和可视化平台:Apache Superset 从 PyPI 安装 Superset
  • 基于深度学习的医学图像分析:使用PatchGAN实现医学图像分割
  • 优选算法 力扣 11. 盛最多水的容器 双指针降低时间复杂度 贪心策略 C++题解 每日一题
  • AI开灯的几种方法,与物理世界的交互过渡
  • AUTOSAR CP:深度揭秘APPL层(Application Layer)!SWC分配策略与端口交互的终极指南
  • 交叉验证:原理、作用与在机器学习流程中的位置
  • LeetCode 135:分糖果
  • lodash的替代品es-toolkit详解