OpenCV图像处理基础操作汇总

1、使用opencv读写图像

OpenCV支持jpg、png、tif等格式图像读取。

import cv2

import matplotlib.pyplot as plt

path = ‘lena.jpg’

img = cv2.imread(path)

cv2.imwrite(‘lena1.jpg’, img)

2、BGR转RGB

opencv是按照bgr方式读取图像,而plt按照rgb格式显示图像,因此会出现显示异常。为了正常显示,需要进行顺序转换,由BGR转为RGB。

使用opencv:

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

使用矩阵操作:

img = img[:, :, ::-1]

import cv2
import matplotlib.pyplot as plt
import numpy
path = 'lena.jpg'
img = cv2.imread(path)
img = cv2.cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img)
plt.show()

3、获取图像宽高

height, width = img.shape[:2]

或者

img_shape = img.shape

height = img_shape[0]

width = img_shape[1]

4、调整图像尺寸

cv2.resize(img, (height, width), cv2.INTER_LINEAR)

第一个参数为原始图像,第二个为调整后尺寸,第三个为插值算法设置,INTER_NEAREST、INTER_LINEAR、INTER_CUBIC分别为最邻近插值、双线性插值、双三次插值。

import cv2
import matplotlib.pyplot as plt
import numpy
path = 'lena.jpg'
img = cv2.imread(path)
img = cv2.cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = cv2.resize(img, (300, 200), cv2.INTER_LINEAR)
plt.imshow(img)
plt.show()

5、将图像转换为python字节

import cv2

path = 'lena.jpg'

img = cv2.imread(path)

byteArray = bytearray(img)

print(byteArray)

6、将图像一部分区域拷贝到另一部分。

import cv2

import matplotlib.pyplot as plt

path = 'lena.jpg'

img = cv2.imread(path)

img = img[:, :, ::-1]

image_block = img[0:100, 0:100]

img[200:300,200:300] = image_block

plt.imshow(img)

plt.show()

 

7、使用canny提取边缘

import cv2

import matplotlib.pyplot as plt

path = 'lena.jpg'

img = cv2.imread(path)

img = cv2.Canny(img, 100, 150)

plt.imshow(img)

plt.show()

 

8、在图像上绘制矩形框

cv2.rectangle(img, (350, 120), (470, 520), (0, 255, 0), 2)

第一个参数为原图,第二和第三个参数为图像左上角和右下角坐标,第四个参数为线框颜色,第五个参数为线宽。

import cv2

import matplotlib.pyplot as plt

import numpy

path = 'person.jpg'

img = cv2.imread(path)

img = cv2.rectangle(img, (350, 120), (470, 520), (0, 255, 0), 2)

plt.imshow(img)

plt.show()

9、镜像变换

水平镜像:img = cv2.flip(img,1,dst=None)

垂直镜像:img = cv2.flip(img,0,dst=None)

对角镜像:img = cv2.flip(img,-1,dst=None)

10、图像滤波

均值滤波:dst = cv2.blur(img, [5, 5])

中值滤波:dst = cv2.medianBlur(img, 7)

双边滤波:dst = cv2.bilateralFilter(img, 10, 30, 30)

11、图像添加文字

cv2.putText(img, text, (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 0), 2,)

参数说明:原始图像,文字,坐标(左上角),字体,字体大小、颜色、字体线条粗细

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TheMatrixs

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值