当前位置:网站首页>opencv学习笔记二——图像基本操作
opencv学习笔记二——图像基本操作
2022-07-07 05:19:00 【我是一个小稻米】
1. POI区域:感兴趣区域
2. 边缘填充
3. 数值运算
import cv2
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
from PIL import Image
image1 = mpimg.imread('1.jpg')
image2 = mpimg.imread('2.jpg')
plt.imshow(image1)

plt.imshow(image2)

图像加法
image3 = image1+image2
plt.imshow(image3)

图像裁剪
plt.imshow(image1[100:-100, 100:-100, :]);

图像缩放
fx和fy表示缩放倍数
image4 = cv2.resize(image1, (0, 0), fx=3, fy=1)
plt.imshow(image4);

4. 图像阈值
ret, dst = cv2.threshold(src, thresh, maxval, type)
- src: 输入图像,只能是单通道图像
- dst:输出图
- thresh:阈值
- maxval:当像素值超过了阈值或小于阈值时的取值
- type:二值化的类型
- cv2.THRESH_BINARY 超过阈值取maxval,否则取0
- cv2.THRESH_BINARY_INV THRESH_BINARY的反转
- cv2.THRESH_TRUNC 大于阈值设置阈值,其余不变
- cv2.THRESH_TOZERO 大于阈值不变,其余设为0
- cv2.THRESH_TOZERO_INV THRESH_TOZERO的反转
image1_gray = image1[:,:,0]
res, thresh1 = cv2.threshold(image1_gray, 127, 255, cv2.THRESH_BINARY)
res, thresh2 = cv2.threshold(image1_gray, 127, 255, cv2.THRESH_BINARY_INV)
res, thresh3 = cv2.threshold(image1_gray, 127, 255, cv2.THRESH_TRUNC)
res, thresh4 = cv2.threshold(image1_gray, 127, 255, cv2.THRESH_TOZERO)
res, thresh5 = cv2.threshold(image1_gray, 127, 255, cv2.THRESH_TOZERO_INV)
titles = ['Original Image', 'BINARY', 'BINARY_INV', 'TRUNC', 'TOZERO', 'TOZERO_INV']
images = [image1_gray, thresh1, thresh2, thresh3, thresh4, thresh5]
for i in range(6):
plt.subplot(2,3,i+1)
plt.imshow(images[i], 'gray')
plt.title(titles[i])
plt.xticks([])
plt.yticks([])
plt.show()

边栏推荐
- 饥荒云服管理脚本
- 基于Pytorch 框架手动完成线性回归
- offer收割机:两个长字符串数字相加求和(经典面试算法题)
- Vulnerability recurrence easy_ tornado
- 数据库实时同步利器——CDC(变化数据捕获技术)
- 柯基数据通过Rainbond完成云原生改造,实现离线持续交付客户
- 【数字IC验证快速入门】13、SystemVerilog interface 和 program 学习
- Avatary的LiveDriver试用体验
- CCTV is so warm-hearted that it teaches you to write HR's favorite resume hand in hand
- 面试题(CAS)
猜你喜欢

eBPF Cilium实战(1) - 基于团队的网络隔离

What is the function of paralleling a capacitor on the feedback resistance of the operational amplifier circuit
![[step on the pit series] H5 cross domain problem of uniapp](/img/53/bd836a5c5545f51be929d8d123b961.png)
[step on the pit series] H5 cross domain problem of uniapp

Network learning (II) -- Introduction to socket

Use of JMeter

Register of assembly language by Wang Shuang

eBPF Cilium实战(2) - 底层网络可观测性

央视太暖心了,手把手教你写HR最喜欢的简历

Vulnerability recurrence fastjson deserialization

Game attack and defense world reverse
随机推荐
Make LIVELINK's initial pose consistent with that of the mobile capture actor
buureservewp(2)
Summary of redis functions
Recursive method to construct binary tree from preorder and inorder traversal sequence
The element with setfieldsvalue set is obtained as undefined with GetFieldValue
Network learning (I) -- basic model learning
Function extension, attribute extension and non empty type extension in kotlin
Réplication de vulnérabilité - désrialisation fastjson
追风赶月莫停留,平芜尽处是春山
Jmeter 的使用
Use of any superclass and generic extension function in kotlin
offer收割机:两个长字符串数字相加求和(经典面试算法题)
数据库实时同步利器——CDC(变化数据捕获技术)
通俗易懂单点登录SSO
UnityHub破解&Unity破解
eBPF Cilium实战(2) - 底层网络可观测性
电池、电机技术受到很大关注,反而电控技术却很少被提及?
Qinglong panel -- Huahua reading
The reified keyword in kotlin is used for generics
青龙面板-今日头条