湖南省新邵县建设局网站,海外电商平台哪个好,先建网站还是先做网页,自己做网站能否赚钱6目录 二七、离散余弦变换
执行离散余弦变换 (dct) 和逆变换 (idct)
解释
实际应用
JPEG压缩示例#xff08;简化版#xff09;
二八、图像几何变换
仿射变换 (warpAffine 和 getAffineTransform)
透视变换 (warpPerspective 和 getPerspectiveTransform)
旋转变换 (g…目录 二七、离散余弦变换
执行离散余弦变换 (dct) 和逆变换 (idct)
解释
实际应用
JPEG压缩示例简化版
二八、图像几何变换
仿射变换 (warpAffine 和 getAffineTransform)
透视变换 (warpPerspective 和 getPerspectiveTransform)
旋转变换 (getRotationMatrix2D)
极坐标变换 (warpPolar 和 linearPolar) http://t.csdnimg.cn/i8pqt —— opencv—常用函数学习_“干货“_总VIP
散的正在一部分一部分发不需要VIP。
资料整理不易有用话给个赞和收藏吧。 二七、离散余弦变换 在OpenCV中离散余弦变换DCT和其逆变换IDCT是常用于图像压缩和处理的技术。DCT将图像数据从时域转换到频域而IDCT则是将数据从频域转换回时域。OpenCV提供了两个主要函数dct 和 idct。
离散余弦变换函数dctidct执行离散余弦变换执行离散余弦逆变换 执行离散余弦变换 (dct) 和逆变换 (idct)
import cv2
import numpy as np# 读取图像并转换为灰度图
image cv2.imread(path_to_image.jpg, cv2.IMREAD_GRAYSCALE)# 将图像转换为浮点型
image_float np.float32(image) / 255.0# 执行离散余弦变换
dct_image cv2.dct(image_float)# 显示DCT变换后的图像
cv2.imshow(DCT Image, dct_image)
cv2.waitKey(0)# 执行离散余弦逆变换
idct_image cv2.idct(dct_image)# 将结果转换回0-255范围的图像
idct_image np.uint8(idct_image * 255)# 显示逆变换后的图像
cv2.imshow(IDCT Image, idct_image)
cv2.waitKey(0)
cv2.destroyAllWindows()解释
dct函数对输入图像进行离散余弦变换。该函数将图像数据从时域转换到频域通常用于压缩算法如JPEG压缩。idct函数对频域数据进行逆变换恢复到时域。
实际应用 离散余弦变换在图像压缩中有广泛的应用。例如在JPEG压缩中图像被分割成8x8的块并对每个块执行DCT变换然后进行量化处理。
JPEG压缩示例简化版
# 读取图像并转换为灰度图
image cv2.imread(path_to_image.jpg, cv2.IMREAD_GRAYSCALE)
h, w image.shape# 将图像转换为浮点型
image_float np.float32(image) / 255.0# 分块处理8x8
block_size 8
dct_blocks np.zeros_like(image_float)# 执行DCT变换
for i in range(0, h, block_size):for j in range(0, w, block_size):block image_float[i:iblock_size, j:jblock_size]dct_block cv2.dct(block)dct_blocks[i:iblock_size, j:jblock_size] dct_block# 显示DCT变换后的图像
cv2.imshow(DCT Blocks, dct_blocks)
cv2.waitKey(0)# 执行逆DCT变换
idct_blocks np.zeros_like(dct_blocks)
for i in range(0, h, block_size):for j in range(0, w, block_size):block dct_blocks[i:iblock_size, j:jblock_size]idct_block cv2.idct(block)idct_blocks[i:iblock_size, j:jblock_size] idct_block# 将结果转换回0-255范围的图像
idct_image np.uint8(idct_blocks * 255)# 显示逆变换后的图像
cv2.imshow(IDCT Blocks, idct_image)
cv2.waitKey(0)
cv2.destroyAllWindows()通过这些示例可以看到如何使用OpenCV中的DCT和IDCT函数来进行离散余弦变换及其逆变换。根据具体的应用需求可以灵活运用这些函数来实现复杂的图像处理和压缩任务。
二八、图像几何变换 在OpenCV中几何变换是图像处理中的基本操作包括旋转、缩放、平移、透视变换等。下面介绍一些常用的几何变换函数及其使用示例。
图像几何变换函数logPolarwarpPolarlinearPolargetAffineTransformwarpAffine对图像进行对数极坐标变换对图像进行极坐标变换对图像进行线性极坐标变换计算仿射变换矩阵对图像进行仿射变换invertAffineTransformgetPerspectiveTransformwarpPerspectivegetRotationMatrix2D计算仿射变换矩阵的逆矩阵计算透视变换矩阵对图像进行透视变换计算二维旋转矩阵 仿射变换 (warpAffine 和 getAffineTransform)
import cv2
import numpy as np# 读取图像
image cv2.imread(path_to_image.jpg)# 获取图像尺寸
rows, cols, ch image.shape# 定义三个点及其对应变换后的点
pts1 np.float32([[50, 50], [200, 50], [50, 200]])
pts2 np.float32([[10, 100], [200, 50], [100, 250]])# 计算仿射变换矩阵
M cv2.getAffineTransform(pts1, pts2)# 对图像进行仿射变换
dst cv2.warpAffine(image, M, (cols, rows))cv2.imshow(Affine Transform, dst)
cv2.waitKey(0)
cv2.destroyAllWindows()透视变换 (warpPerspective 和 getPerspectiveTransform)
# 定义四个点及其对应变换后的点
pts1 np.float32([[56, 65], [368, 52], [28, 387], [389, 390]])
pts2 np.float32([[0, 0], [300, 0], [0, 300], [300, 300]])# 计算透视变换矩阵
M cv2.getPerspectiveTransform(pts1, pts2)# 对图像进行透视变换
dst cv2.warpPerspective(image, M, (300, 300))cv2.imshow(Perspective Transform, dst)
cv2.waitKey(0)
cv2.destroyAllWindows()旋转变换 (getRotationMatrix2D)
# 定义旋转中心、角度和缩放因子
center (cols // 2, rows // 2)
angle 45
scale 1.0# 计算旋转矩阵
M cv2.getRotationMatrix2D(center, angle, scale)# 对图像进行旋转变换
rotated cv2.warpAffine(image, M, (cols, rows))cv2.imshow(Rotated Image, rotated)
cv2.waitKey(0)
cv2.destroyAllWindows()极坐标变换 (warpPolar 和 linearPolar)
# 极坐标变换
polar_image cv2.warpPolar(image, (cols, rows), (cols//2, rows//2), max(cols, rows) // 2, cv2.WARP_FILL_OUTLIERS)# 对数极坐标变换
log_polar_image cv2.logPolar(image, (cols//2, rows//2), 40, cv2.WARP_FILL_OUTLIERS)cv2.imshow(Polar Transform, polar_image)
cv2.imshow(Log Polar Transform, log_polar_image)
cv2.waitKey(0)
cv2.destroyAllWindows()这些示例展示了如何使用OpenCV中的几何变换函数来处理图像。根据具体的应用需求可以灵活运用这些函数来实现复杂的图像处理任务。