0
点赞
收藏
分享

微信扫一扫

NLP与GPT联合碰撞:大模型与小模型联合发力

青青子衿谈育儿 2023-06-05 阅读 99

在这里插入图片描述

1. 概述

为了方便开发人员的操作,OpenCV还提供了一些图像变换的API,本篇文章讲简单介绍各种API的使用,并附上一些样例。

2. 接口介绍

resize()

缩放算法参数
在这里插入图片描述
效果越好的算法运算越复杂,效果越好。反之相反。

import cv2
import numpy as np

lina = cv2.imread('./image/lina.jpg')
print(lina.shape)
# 修改图像大小:fx,fy可以省略,默认为双线性插值
lina2 = cv2.resize(lina, (700, 700))
# 使用缩放因子,需要指定参数,并且dsize传空
lina3 = cv2.resize(lina, None, fx=2, fy=2, interpolation=cv2.INTER_AREA)

cv2.imshow('lina', lina)
cv2.imshow('lina3', lina3)

cv2.waitKey(0)

在这里插入图片描述

flip()

import cv2
import numpy as np

lina = cv2.imread('./image/lina.jpg')
print(lina.shape)
# 上下翻转
lina_0 = cv2.flip(lina, 0)
# 左右翻转
lina_1 = cv2.flip(lina, 1)
# 上下左右翻转
lina_01 = cv2.flip(lina, -1)

cv2.imshow('lina', lina)
cv2.imshow('lina_0', lina_0)
cv2.imshow('lina_1', lina_1)
cv2.imshow('lina_01', lina_01)

cv2.waitKey(0)

在这里插入图片描述

rotate()

rotateCode
在这里插入图片描述

import cv2
import numpy as np

lina = cv2.imread('./image/lina.jpg')
print(lina.shape)

# 顺时针转90
lina_90 = cv2.rotate(lina, cv2.ROTATE_90_CLOCKWISE)

# 顺时针转180
lina_180 = cv2.rotate(lina, cv2.ROTATE_180)

# 顺时针转270,逆时针转90
lina_270 = cv2.rotate(lina, cv2.ROTATE_90_COUNTERCLOCKWISE)
cv2.imshow('lina', lina)
cv2.imshow('lina_90', lina_90)
cv2.imshow('lina_180', lina_180)
cv2.imshow('lina_270', lina_270)

cv2.waitKey(0)

在这里插入图片描述

仿射变换

仿射变换是图像旋转、缩放、平移的总成。

warpAffine()

getRotationMatrix2D()-变换矩阵1

import cv2
import numpy as np

lina = cv2.imread('./image/lina.jpg')
print(lina.shape)

# 变换前要求出变换矩阵

M = cv2.getRotationMatrix2D((200, 200), 30, 1.0)
lina2 = cv2.warpAffine(lina, M, (474, 474))



cv2.imshow('lina', lina)
cv2.imshow('lina2', lina2)


cv2.waitKey(0)

在这里插入图片描述

getAffineTransform()-变换矩阵2

import cv2
import numpy as np

lina = cv2.imread('./image/lina.jpg')
print(lina.shape)


# 变换前要求出变换矩阵
# 坐标一定要是32位的小数!!否则会报错
src = np.float32([[0, 0], [0, 100], [100, 0]])
dst = np.float32([[50, 50], [50, 150], [200,50]])
M = cv2.getAffineTransform(src, dst)
lina2 = cv2.warpAffine(lina, M, (474, 474))


cv2.imshow('lina', lina)
cv2.imshow('lina2', lina2)


cv2.waitKey(0)

透视变换

完全改变物体的位置和形状,需要四个坐标点。一般用来调整图片的位置。

warpPerspective()

getPerspectiveTransform()

import cv2
import numpy as np

work = cv2.imread('./image/work.jpg')
# 将图片调整到适合大小
work = cv2.resize(work, (700, 700), interpolation=cv2.INTER_AREA)
# 设置适当变换坐标,求出变换矩阵
src = np.float32([[210, 20], [700, 110], [0, 660], [600, 700]])
dst = np.float32([[0, 0], [700, 0], [0, 700], [700, 700]])
M = cv2.getPerspectiveTransform(src, dst)
# 进行透视变换
work2 = cv2.warpPerspective(work, M, (700, 700))
cv2.imshow('work', work)
cv2.imshow('work2', work2)


cv2.waitKey(0)

变换后如图所示,将主要图片变正了
在这里插入图片描述

以上就是图像变换的简单介绍,如果有疑问,欢迎在评论区讨论哦。

举报

相关推荐

0 条评论