opencv-python基础操作汇总——1(读取、画线、平移,旋转缩放、翻转和裁剪等操作)

前言

最近中日合作活动中要求使用opencv-python,于是我就复习一下,做个小总结,😄。

1. 读取并显示

注意:opencv读取时,默认是BGR格式,且是numpy.ndarray类型

import cv2
import matplotlib.pyplot as plt

image = cv2.imread('./im0.png') # 默认读取BGR格式
print('图片的高:', image.shape[0])
print('图片的宽:', image.shape[1])
print('图片的通道数:', image.shape[2])
plt.imshow(image)
# plt.axis('off') # 不显示坐标
plt.show()

效果如下:
在这里插入图片描述

2. 转为RGB图片并保存

import cv2
import matplotlib.pyplot as plt

image = cv2.imread('./im0.png') # 默认读取BGR格式
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
plt.imshow(image)
# plt.axis('off') # 不显示坐标
plt.show()

cv2.imwrite('new_img.jpg')

效果如下:
在这里插入图片描述

3. 画线

3.1 直线

可以使用cv2.line
第一个参数是图片的各个维度的值, 第二个参数是起始坐标,第三个参数是终止坐标, 第四个参数是画线颜色的RBG的值, 第五个参数是线的宽度。

import cv2
import matplotlib.pyplot as plt
import numpy as np
image = np.zeros((224, 224, 3), dtype=np.uint8)
g = (0, 255, 0)
cv2.line(image, (0, 0), (224, 224), g, 5)
plt.imshow(image)
plt.show()

效果如下:
在这里插入图片描述

3.2 矩形

使用cv2.rectangle,第一个参数是图片的各个维度的值, 第二个参数是矩形左上角坐标,第三个参数是矩形右下角坐标, 第四个参数是画线颜色的RBG的值, 第五个参数是线的宽度,若是-1,则会将矩形填充。

import cv2
import matplotlib.pyplot as plt
import numpy as np
image = np.zeros((224, 224, 3), dtype=np.uint8)
g = (0, 255, 0)
# cv2.line(image, (0, 0), (224, 224), g, 5)
cv2.rectangle(image, (30, 30), (100, 100), g, 3)
cv2.rectangle(image, (60, 60), (200, 200), g, -1)
plt.imshow(image)
plt.show()

效果如下:
在这里插入图片描述

3.3 圆形

使用cv2.circle, 第一个参数是图片的各个维度的值, 第二个参数是圆心坐标,第三个参数是半径, 第四个参数是画线颜色的RBG的值, 第五个参数是线的宽度,若是-1,则会将矩形填充。

import cv2
import matplotlib.pyplot as plt
import numpy as np
image = np.zeros((224, 224, 3), dtype=np.uint8)
g = (0, 255, 0)
cv2.circle(image, (112, 112), 112, g, 4)
cv2.circle(image, (112, 112), 60, g, -1)
plt.imshow(image)
plt.show()

效果如下:
在这里插入图片描述

4. 图像平移

使用的是cv2.warpAffine,第一个参数是图片的各个维度的值, 第二个参数是方向,第三个是图片大小

import cv2
import matplotlib.pyplot as plt
import numpy as np
image = cv2.imread('im0.png')

a = np.float32([
    [1, 0, 250], # 向右平移250个像素点
    [0, 1, 200] # 向下平移200个像素点
])
image = cv2.warpAffine(image, a, (image.shape[1], image.shape[0]))
plt.imshow(image)
plt.show()

5. 图像旋转与缩放

使用的是cv2.getRotationMatrix2D和cv2.warpAffine结合,cv2.getRotationMatrix2D第一个参数是旋转中心坐标,第二个参数是旋转角度,第三个是缩放程度。

import cv2
import matplotlib.pyplot as plt
import numpy as np
image = cv2.imread('im0.png')

h, w = image.shape[0], image.shape[1]
x, y = w/2, h/2
a = cv2.getRotationMatrix2D((x, y), 45, 1.5)
image = cv2.warpAffine(image, a, (w, h))
plt.imshow(image)
plt.show()

效果如下:
在这里插入图片描述

6. 图像调整大小(resize)

使用的是cv2.resize,第一个参数是图片,第二个参数是调整大小的宽和高,第三个参数是插值方法

import cv2
import matplotlib.pyplot as plt
import numpy as np
image = cv2.imread('im0.png')

n_w, n_h = 224, 224
image = cv2.resize(image, (n_w, n_h))
plt.imshow(image)
plt.show()

在这里插入图片描述

7. 翻转

使用的是cv2.flip,第一个参数是图片,第二个参数是翻转方式

7.1 水平翻转

import cv2
import matplotlib.pyplot as plt
import numpy as np
image = cv2.imread('im0.png')

image = cv2.flip(image, 1)
plt.imshow(image)
plt.show()

在这里插入图片描述

7.2 垂直翻转

import cv2
import matplotlib.pyplot as plt
import numpy as np
image = cv2.imread('im0.png')

image = cv2.flip(image, 0)
plt.imshow(image)
plt.show()

在这里插入图片描述

7.3 水平+垂直

import cv2
import matplotlib.pyplot as plt
import numpy as np
image = cv2.imread('im0.png')

image = cv2.flip(image, -1)
plt.imshow(image)
plt.show()

在这里插入图片描述

8. 裁剪

裁剪主要是对x和y轴上的取值做变化,如下:
在x轴上取0~500,y轴取100到最后

import cv2
import matplotlib.pyplot as plt
import numpy as np
image = cv2.imread('im0.png')

image = image[0:500, 100:]
plt.imshow(image)
plt.show()

在这里插入图片描述

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值