IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Python cv2 参数详解 -> 正文阅读

[人工智能]Python cv2 参数详解

一 图像基本

1 调入模块

#--*coding:utf-8*--
#!/usr/bin/ebv python
import cv2#基本                         #opencv 读取的格式是BGR  非rgb
import matplotlib.pyplot as plt    #绘图展示
import numpy as np                  #基本计算

2 读入图像

图片=cv2.imread(“a01.jpg”)
灰度图片=cv2.imread(“a01.jpg”, cv2.IMREAD_GRAYSCALE)

3 打印图像数据

print(“图片”,图片)

3.1查看图片信息 (宽\高和通道)

print(图片.shape,图片.size)

4 显示图片/视频 列表显示

  • cv2.imshow("",图片)

  • cv2.imshow(“影片”,cv2.cvtColor(cv2.read(影片)[1]))

          打开,帧=影片.read()
          cv2.imshow("影片",帧)
    

4.1 列表显示 ①

展示=np.hstack((图片,图片2)) # 同通道 同尺寸
cv2.imshow(“zhanshi”,展示))

4.2 列表显示 ②

# 边界填充
#--*coding:utf-8*--
import cv2
import numpy as np

图片=cv2.imread("a01.jpg")

复制边缘=cv2.copyMakeBorder(图片,100,100,200,200,cv2.BORDER_REPLICATE)
# 可以先规定 上下左右  
top,bottom,left,right=(100,100,200,200)
反射边缘=cv2.copyMakeBorder(图片,top,bottom,left,right,cv2.BORDER_REFLECT)
反射边缘_101=cv2.copyMakeBorder(图片,top,bottom,left,right,cv2.BORDER_REFLECT_101)
常量边缘=cv2.copyMakeBorder(图片,top,bottom,left,right,cv2.BORDER_CONSTANT,value=0)# 黑色 0

展示=np.hstack((复制边缘,反射边缘,反射边缘_101,常量边缘)) #  要相同尺寸
cv2.imshow("4in1",展示)
cv2.waitKey(0)

# 另一种显示方式  列表显示
import matplotlib.pyplot as plt
###  调整 颜色 顺序   bgr → rgb
b,r,g=cv2.split(图片)
b,r,g=cv2.split(反射边缘)
b,r,g=cv2.split(复制边缘)
图片_rgb=cv2.merge([g,r,b])
复制边缘_rgb=cv2.merge([g,r,b])
反射边缘_rgb=cv2.merge([g,r,b])

	#   列表显示
plt.subplot(231),plt.imshow(图片_rgb,"gray"),plt.title("ORIGINAL")
plt.subplot(232),plt.imshow(复制边缘_rgb,"gray"),plt.title("REOLICATE")
plt.subplot(233),plt.imshow(反射边缘_rgb,"gray"),plt.title("REOLICATE101")

plt.show()

4.4 停止 显示 等待时间 毫秒 ,0表示 任意键停止

-cv2.waitKey(100)

4.5 停止 视频

  • cv2.waitKey(25)&0xFF==27: # 键盘ESC(27)退出, 否则等待25毫秒

5 关闭所有窗口

cv2.destroyAllWindows()

6 复制图片

图片2=图片.copy()

6.1 颜色空间转换

#彩色图像转为灰度图像
img2 = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
灰度图像转为彩色图像
img3 = cv2.cvtColor(img,cv2.COLOR_GRAY2RGB

6.2 用颜色通道 转换 bgr rgb

# 提取颜色通道
b,g,r=cv2.split(图片)
图片通道合成rgb=cv2.merge(r,g,b)

7 保存图像

cv2.imwrite(“z图像保存.jpg”,img1)

8 图像大小 图像类型

print(img1.size,img1.dtype)

8.1改变 图像大小

图片2=cv2.resize(图片,(500,50))
图片3=cv2.resize(图片,(0,0),fx=倍数,fy=倍数)
图片3=cv2.resize(图片,(int(图片.shape[0]*0.5),int(图片.shape[1]*0.5))) # 好像必须是整数

8.2 截取部分图像

根据对图像的坐标设定

截图=img1[:500,:800]

8.3 边缘 调整

# 边界填充
#--*coding:utf-8*--
import cv2

图片=cv2.imread("a01.jpg")
cv2.imshow("img",图片)
cv2.waitKey(1000)

print(图片.shape)
top,bottom,left,right=(100,100,200,200)
复制边缘=cv2.copyMakeBorder(图片,top,bottom,left,right,cv2.BORDER_REPLICATE)
反射边缘=cv2.copyMakeBorder(图片,top,bottom,left,right,cv2.BORDER_REFLECT)
反射边缘_101=cv2.copyMakeBorder(图片,top,bottom,left,right,cv2.BORDER_REFLECT_101)
常量边缘=cv2.copyMakeBorder(图片,top,bottom,left,right,cv2.BORDER_CONSTANT,value=0)# 黑色 0
	# cv2.imshow("1",复制边缘,"2",反射边缘,"3",反射边缘_101,"4",常量边缘)

	# 列表显示
import matplotlib.pyplot as plt
###  调整 颜色 顺序   bgr → rgb
b,r,g=cv2.split(图片)
b,r,g=cv2.split(反射边缘)
b,r,g=cv2.split(复制边缘)
图片_rgb=cv2.merge([g,r,b])
复制边缘_rgb=cv2.merge([g,r,b])
反射边缘_rgb=cv2.merge([g,r,b])

	#   列表显示
plt.subplot(231),plt.imshow(图片_rgb,"gray"),plt.title("ORIGINAL")
plt.subplot(232),plt.imshow(复制边缘_rgb,"gray"),plt.title("REOLICATE")
plt.subplot(233),plt.imshow(反射边缘_rgb,"gray"),plt.title("REOLICATE101")

plt.show()

9 翻转图像

使用函数cv2.flip(img,flipcode)翻转图像,flipcode控制翻转效果。
flipcode = 0:沿x轴翻转
flipcode > 0:沿y轴翻转
flipcode < 0:x,y轴同时翻转

翻转的图片= cv2.flip(原始图片,1)

10 颜色通道提取

b,g,r=cv2.split(图片)
print(“通道b”,b,b.shape)

11 用颜色通道 合成 rgb 改 bgr 为 rgb

图片通道合成rgb=cv2.merge(r,g,b)

只保留R

img[:,:,0]=0
img[:,:,1]=0
cv2.imshow(“红色”,img)
cv2.waitKey(100)

只保留B

img2=cv2.imread(“a01.jpg”)
img2[:,:,1]=0
img2[:,:,2]=0
cv2.imshow(“B”,img2)

12 写字 画画

由于  cv2 不支持中文,  遇到中文的时候还是要用 PIL的,   两种方案的打开方式和 展现方式都不一样的	

12.1 cv2 只能英文字体

12.2 PIL 中文字体

# 写字画画
#--*coding:utf-8*--
import cv2
import numpy as np

# 创建一个数组,  画布
画布=np.ones((600,400,3),dtype="uint8")*88    # 填充灰色
#   线  型  面
# 线=cv2.line(画布,(0,0),(10,10),390,390,10)
线=cv2.line(画布,(0,0),(390,390),(125,20,0),5)
矩形=cv2.rectangle(画布,(100,300),(300,500),(0,125,20),5)
矩形_实心=cv2.rectangle(画布,(200,420),(250,320),(255,125,20),-1)
圆形=cv2.circle(画布,(200,200),150,(20,20,200),6)
椭圆形=cv2.ellipse(画布,(200,200),(50,20),20,10,300,(20,20,200),-1)
# 20,20,200  分别表示 x y轴 倾斜度数, 200表示扇形度数
"""======================== 写字==========================================="""
# 引入字体# 图片对象,要写的内容,左边距,字的底部到画布上端的距离,字体,大小,颜色,粗细
英文文字=cv2.putText(画布,"English",(30,550),cv2.FONT_HERSHEY_DUPLEX,5,(125,0,200),5)
cv2.imwrite("z600.jpg",画布)

## 中文字体
from PIL import Image,ImageDraw,ImageFont

画布2=Image.open("z600.jpg")
画笔=ImageDraw.Draw(画布2)
字体=ImageFont.truetype("C:\WINDOWS\FONTS\STHUPO.TTF",44)
# 内容
画笔.text((30,10),"中文字体",fill="red",font=字体)

#显示  中文
画布2.show()

# 显示  英文 cv2
cv2.imshow("English",画布)
cv2.waitKey(0)

二 图像 复杂

3 图片计算"""

#–coding:utf-8
import cv2
# 读入图片
import numpy as np

img1=cv2.imread(“a01.jpg”)
img2=cv2.imread(“a03.jpg”)

print(img1[:5,:,0])

各个数值 +10 颜色更黑

img1_new=img1+10
print(img1_new[:5,:,0])

调整成 统一尺寸

print((img1.shape),(img2.shape))
img2_new=cv2.resize(img2,(1023, 683))
#resize(img.(x,y),fx=倍数,fy=倍数)

两个图相加

img_sum=(img1+img2_new)[5:,:,0]

图片数字融合

#img_sum1=(img1,权重,img2,权重,提亮倍数)

print((img1.shape),(img2_new.shape))

import matplotlib.pyplot as plt
### 编号 展示 名字
plt.subplot(131),plt.imshow(img1),plt.title(“img1”)
plt.subplot(132),plt.imshow(img1_new),plt.title(“img1_new”)
plt.subplot(133),plt.imshow(img_sum),plt.title(“img_num”)
plt.show()

4 列表展示

展示=np.hstack((img1,img1_new))
# print(展示)
cv2.imshow(“SHOW”,展示)
cv2.waitKey(0)

三 形态学 腐蚀和膨胀

腐蚀 膨胀

开运算  先腐蚀后膨胀  去刺
闭运算

顶帽和黑帽 (闭运算- 原始)
#--*coding:utf-8*--
# 导入模块
import cv2
import numpy as np

# 打开文件
img=cv2.imread("a05.png")

# 腐蚀图像
盒子=np.ones((3,3))
img_erode=cv2.erode(img,盒子,iterations=3)

# 膨胀图像
img_dilate=cv2.dilate(img_erode,盒子,iterations=3)

# 梯度运算
img_梯形=cv2.morphologyEx(img,cv2.MORPH_GRADIENT,盒子)

# 开运算  先腐蚀在膨胀 去刺
img_open=cv2.morphologyEx(img,cv2.MORPH_OPEN,盒子)
#  闭运算  先膨胀在腐蚀
img_closs=cv2.morphologyEx(img,cv2.MORPH_CLOSE,盒子)

# 礼帽 =原始图像-开运算
img_礼帽=cv2.morphologyEx(img,cv2.MORPH_TOPHAT,盒子)
img_黑帽=cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,盒子)

展示=np.hstack((img,img_open,img_closs))
cv2.imshow("zhanshi",展示)
cv2.waitKey(0)
cv2.destroyAllWindows()

四 视频

思路

VideoCapture读入影片 → ISOpend 判断是否能打开,并未下一步循环 准备 “打开”
显示 每一帧, weitKey 25毫秒, 或者ESC退出

和图片区别

打开  图片=vc2.imread("图片.jpg")
		影片=VC2.cvtColor(影片.read()[1])
# --*coding:utf-8*--
import cv2  # 基本          #opencv 读取的格式是BGR  非rgb
import numpy as np  # 基本计算

# 读入数据
影片 = cv2.VideoCapture("v02 卡点.mp4")
# 图片的赌球  cv2.imread("图片名称.jpg")

# cv2.imshow("ship",影片)   #不能直接读视频

# 要先拆开,在合成

## 判断是否可以正确打开
if 影片.isOpened():
    打开,=影片.read()
else:打开=False

## 拆分 组合
while 打开:
    打开,=影片.read()
    ifis None:
        break
    if 打开 is True:
        cv2.imshow("gray",)
        if cv2.waitKey(25)&0xFF==27: # 键盘ESC(27)退出, 否则等待25毫秒
            break
影片.release() # 内存释放
cv2.destroyAllWindows() # 关闭全部窗
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章           查看所有文章
加:2021-11-20 18:23:44  更:2021-11-20 18:26:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 4:36:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码