透视变换是一个很实用的功能,当用手机去拍证件或者名片时,经常会拍歪,或者有边框。如果你使用过类似“扫描全能王”的软件,你应该知道,他们会自动把证件矫正并除边框,它就是通过透视变换实现的,和numpy中的仿射变换一样。

左图为原图,右图为矫正后的图

1.运行环境

  • Python3.6.5
  • pycharm
  • win10
  • 安装oponcv, numpy 库
    安装教程链接

2.代码

import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('E:\\card2.jpg')
rows, cols = img.shape[:2]
# 原图中书本的四个角点
pts1 = np.float32([[69, 163], [704, 62], [162, 675], [970, 411]])
# 变换后分别在左上、右上、左下、右下四个点
pts2 = np.float32([[0, 1000], [0, 0], [750, 1000], [750, 0]])
# 生成透视变换矩阵
M = cv2.getPerspectiveTransform(pts1, pts2)
# 进行透视变换
dst = cv2.warpPerspective(img, M, (750, 1000))
plt.subplot(121), plt.imshow(img[:, :, ::-1]), plt.title('input')
plt.subplot(122), plt.imshow(dst[:, :, ::-1]), plt.title('output')
# img[:, :, ::-1]是将BGR转化为RGB
plt.show()

3.解析

图中角点坐标需要自己设定

通过锁定书的角点,并设定改变后的角点,来达到矫正图像的目的。坐标原点在图片左上角!

Python:用numpy+OpenCV快速实现矫正图像的功能相关推荐

  1. opencv python3 找图片不同_如何使用OpenCV快速寻找定位图像差异

    原标题:如何使用OpenCV快速寻找定位图像差异 如何使用结构相似性指数(SSIM)将两个图像与Python进行比较. 使用这种方法,我们能够轻松确定两个图像是否相同或由于轻微的图像处理,压缩伪像或有 ...

  2. python计算机视觉-- 基于OpenCV的图像分割和图像融合系统

    目录 前言 一.需求分析 二.概要设计 2.1 基本原理 2.2 界面设计 三.详细设计 3.1 系统流程图 3.2 数据集 3.3 代码实现 3.3.1 利用deeplabV3模型分割 3.3.2  ...

  3. pythonisnan_python - 在NumPy中快速检查NaN

    python - 在NumPy中快速检查NaN 我正在寻找最快的方法来检查NumPy数组np.nan != np.nan中NaN(np.nan in X)的出现.np.isnan(X)是不可能的,因为 ...

  4. 在python中使用opencv自带函数转换转换RBG和BGR

    在python中使用opencv自带函数转换图像的R通道和B通道 RGB -> BGR img_bgr = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2BGR) BG ...

  5. 卷积处理过程模拟:用Python实现OpenCV函数filter2D等效的卷积功能

    一.引言 在<OpenCV-Python 图像平滑处理:卷积函数filter2D详解及均值滤波案例>介绍了filter2D相关的功能及使用,下面老猿用Python.numpy矩阵运算以及O ...

  6. 使用Python中的OpenCV降噪功能增强图像的3个步骤

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在本文中,我们将展示如何通过三个简单的步骤来实现降噪.我们将使用机 ...

  7. [Python图像处理] 二十八.OpenCV快速实现人脸检测及视频中的人脸

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  8. 《OpenCv视觉之眼》Python图像处理六 :Opencv图像傅里叶变换和傅里叶逆变换原理及实现

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  9. OpenCV快速傅里叶变换(FFT)用于图像和视讯流的模糊检测

    OpenCV快速傅里叶变换(FFT)用于图像和视频流的模糊检测 翻译自[OpenCV Fast Fourier Transform (FFT) for blur detection in images ...

最新文章

  1. (原創) 如何將編譯結果,統一放在一個目錄下? (SOC) (Quartus II)
  2. Asp.net生成缩略图
  3. Python中爬虫框架或模块的区别!
  4. SharedPreferences实现记住密码功能
  5. kali BEEF-XSS启动报错解决
  6. 如何判断软件架构的好与坏
  7. oracle几个网络,ORACLE网络的几个重点概念
  8. 3小时解决头疼的年终报表!
  9. bzoj 2656: [Zjoi2012]数列(sequence)(简单高精度模板2.0)
  10. 【推荐】 Neutralizer 安卓上特殊的均衡器
  11. 广东自考计算机专业在校生,2020年4月广东自考计算机及应用专业计划及课程设置(B080702本科)...
  12. sphinxPHP api全文检索的例子
  13. VS2019提示“未能完成操作,不支持此接口”
  14. 批量取消bilibili关注
  15. SylixOS学习三—— SylixOS的引导与安装2
  16. MybatisPlus相关
  17. 西南民族大学第十届校赛(同步赛)(J题——怪盗基德 月之瞳宝石)
  18. CNS无线电信号覆盖分析系统
  19. 6.5万游客昨日赴北京香山赏红叶-香山-红叶节-游客
  20. FizzBuzz(二)

热门文章

  1. 学习理发去哪里_想学理发,去哪里学比较好
  2. java zipfile entries_Java ZipFile.getEntries方法代碼示例
  3. 深入理解css行高line-height
  4. yolov3实现对微信v2v3数据的提取与导入,网络层参数代码已打包好
  5. 广大电脑朋友,请注意健康!
  6. HTML 网站优化三大标签(title ,description ,keywords)
  7. 2022最新HTML+CSS高频面试题
  8. 【电气专业知识问答】问:大型发电机励磁控制系统的特点和要求是什么?
  9. python--星际大战(基础版)
  10. 计算机在音乐教学中的运用,计算机音乐软件在音乐理论课教学中的运用