文章目录

  • 示例代码
  • 函数列表
  • 参考资料

示例代码

import cv2
import imutils
import numpy as npimg = cv2.imread(r'C:\Users\ml\Desktop\0.png')result3 = img.copy()gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
dilate = cv2.dilate(blurred, cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3)))
edged = cv2.Canny(dilate, 30, 120, 3)            # 边缘检测cnts = cv2.findContours(edged.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)  # 轮廓检测
cnts = cnts[0] if imutils.is_cv2() else cnts[1]  # 判断是opencv2还是opencv3
docCnt = Noneif len(cnts) > 0:cnts = sorted(cnts, key=cv2.contourArea, reverse=True) # 根据轮廓面积从大到小排序for c in cnts:peri = cv2.arcLength(c, True)                                       # 计算轮廓周长approx = cv2.approxPolyDP(c, 0.02*peri, True)           # 轮廓多边形拟合# 轮廓为4个点表示找到纸张if len(approx) == 4:docCnt = approxbreak
print(docCnt)
box = [docCnt[0][0],docCnt[1][0],docCnt[2][0],docCnt[3][0]]
rectangle_L = int(np.sqrt(pow((box[0][0]-box[1][0]), 2) + pow((box[0][1]-box[1][1]), 2)))
rectangle_W = int(np.sqrt(pow((box[0][0]-box[3][0]), 2) + pow((box[0][1]-box[3][1]), 2)))
print(rectangle_L)
print(rectangle_W)src = np.float32(docCnt)
dst = np.float32([[0, 0], [0, rectangle_L], [rectangle_W, rectangle_L], [rectangle_W, 0]])
m = cv2.getPerspectiveTransform(src, dst)
result = cv2.warpPerspective(result3, m, (rectangle_W, rectangle_L))cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
import imutils
from imutils.perspective import four_point_transformimg = cv2.imread(r'C:\Users\ml\Desktop\0.png')gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)       # 转化为灰度图,加快处理速度
binary = cv2.medianBlur(gray,7)       # 中值滤波
cv2.imshow('binary',binary)
# blurred = cv2.GaussianBlur(gray, (5, 5), 0)
# cv2.imshow('blurred',blurred)
dilate = cv2.dilate(binary, cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3)))
cv2.imshow('dilate',dilate)
edged = cv2.Canny(dilate, 30, 120, 3)            # 边缘检测
cv2.imshow('edged',edged)cnts = cv2.findContours(edged.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)  # 轮廓检测
cnts = cnts[0] if imutils.is_cv2() else cnts[1]  # 判断是opencv2还是opencv3docCnt = Noneif len(cnts) > 0:cnts = sorted(cnts, key=cv2.contourArea, reverse=True) # 根据轮廓面积从大到小排序for c in cnts:peri = cv2.arcLength(c, True)                                       # 计算轮廓周长approx = cv2.approxPolyDP(c, 0.02*peri, True)           # 轮廓多边形拟合# 轮廓为4个点表示找到纸张if len(approx) == 4:docCnt = approxbreak
print(docCnt)
result = four_point_transform(img, docCnt.reshape(4,2)) # 对原始图像进行四点透视变换cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
import operatorix,iy = 0,0
box =[]img = cv2.imread(r'C:\Users\ml\Desktop\tng.jpeg')# mouse callback function
def draw_circle(event,x,y,flags,param):global ix, iyif event == cv2.EVENT_LBUTTONDBLCLK:  # 设置鼠标事件ix, iy = x, ycv2.circle(img,(x,y), 6, (0,0,255), -1)cv2.imshow('image', img)cv2.namedWindow('image')
cv2.imshow('image', img)
cv2.setMouseCallback('image',draw_circle)
print(ix,iy)
box.append((ix,iy))
print(box)
i=1'''
while(1):i=i+1cv2.setMouseCallback('image',draw_circle)if operator.eq(box[i], box[1])==True:break
'''
cv2.waitKey(0)
cv2.destroyAllWindows()

函数列表

函数 作用
cv2.GaussianBlur() 高斯滤波:去除噪音,使图像变得平滑
cv2.cvtColor() 颜色空间转换
cv2.Canny() 边缘检测
cv2.approxPolyDP(curve, epsilon, closed) 多边形逼近
cv2.getPerspectiveTransform(src, dst) 透视变换

参考资料

资料1
资料2
资料3
资料4:利用透视变换进行图像纠正
资料5:傅里叶变换和透视变换
资料6:透视变换项目
资料7
文档
图像平滑
颜色空间转换
边缘检测
轮廓处理
鱼眼矫正

openCV+python实现倾斜校正相关推荐

  1. python图像倾斜校正_校正倾斜的文本

    有时候文本是倾斜的,则不利于文本识别,如下图所示,那么进行文本识别之前我们需要应用文本倾斜校正算法(text skew correction,deskewing text). 对于一幅包含旋转文本块的 ...

  2. python 图像倾斜校正_边缘投影法对文本图像矫正——python

    图像矫正就是通过一些已知的参考点,即无失真图象的某些象素点和畸变图象相应象素的坐标间对应关系,拟合出映射关系中的未知系数,并作为恢复其它象素的基础. 1.矫正原理 在进行图片矫正时,有些图片具有小角度 ...

  3. python图像倾斜校正_python 图像倾斜校正

    图像倾斜可以分为两种情况,一种是平面倾斜,这种情况下拍照设备与试卷平行,拍出来的图像只需要进行旋转即可完成矫正:另一种是Z轴倾斜,这种情况下拍照设备与试卷存在一定的角度,拍出来的图像要先进行透视变换, ...

  4. python图像倾斜校正_霍夫变换 文本图片倾斜矫正 python实现

    一.霍夫变换原理简介 霍夫变换主要是利用图片所在的空间和霍夫空间之间的变换,将图片所在的直角坐标系中具有形状的曲线或直线映射到霍夫空间的一个点上形成峰值,从而将检测任意形状的问题转化成了计算峰值的问题 ...

  5. python图像倾斜校正_图像倾斜矫正

    没有找到关于图像倾斜矫正的综述性文献,那就自己整理一下吧. 图像倾斜可以分为两种情况,一种是平面倾斜,这种情况下拍照设备与试卷平行,拍出来的图像只需要进行旋转即可完成矫正:另一种是Z轴倾斜,这种情况下 ...

  6. python.freelycode.com-通过OpenCV和Python进行文本倾斜校正

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 本文所展示的是一个由Pyhton实现的文本倾斜校正的脚本,在实现中使用到了OpenCV和Python的图像 ...

  7. 使用Python和OpenCV进行文本偏斜校正

    使用Python和OpenCV进行文本偏斜校正) 1. 效果图 2. 源码 参考 这篇博客将介绍如何使用Python和OpenCV进行文本偏斜校正.给定图像包含未知角度的旋转文本块,需要通过以下方法纠 ...

  8. opencv 两点之间角度 与倾斜校正应用

    转自:http://blog.csdn.net/u012767067/article/details/19402239 以下代码返回的角度范围是0-360 /********************* ...

  9. 毕业设计之 - 题目:基于机器视觉的试卷批改系统 - opencv python 视觉识别

    文章目录 0 简介 1 项目背景 2 项目目的 3 系统设计 3.1 目标对象 3.2 系统架构 3.3 软件设计方案 4 图像预处理 4.1 灰度二值化 4.2 形态学处理 4.3 算式提取 4.4 ...

最新文章

  1. python async await报错_Python 3.7.7 发布 支持async并await现在为保留关键字
  2. python day two,while
  3. VirtualProtect VirtualLock VirtualUnlock
  4. python合并excel文件关键字_使用 Python 合并多个格式一致的 Excel 文件,Excel 表格...
  5. git切换到旧版本_github上怎么切换到某次提交?
  6. c# 2.0 Factory的实现
  7. AAAI 2018经典论文获奖者演讲:本体论的昨天和今天
  8. 莉莉丝《剑与远征》:基于阿里云全站加速提升用户体验
  9. ZZULIOJ 1062:最大公约数
  10. Magento用的哪个php框架,初识magento框架代码目录
  11. 百度图神经网络——论文节点比赛baseline代码注解
  12. static_cast、dynamic_cast、const_cast和reinterpret_cast总结(转)
  13. C语言编程题:简单的a+b
  14. android微信朋友圈相册背景,微信朋友圈相册背景多大尺寸合适
  15. HTML5 视频、图片截图实例
  16. mac 字体微软雅黑字体_在Microsoft Word 2007中搜索和替换特定格式(字体,样式等)...
  17. 目标优化之帕累托最优
  18. 华为畅享8plus停产了吗_畅享和畅玩的区别_华为畅享8plus买完后悔了
  19. 星鲨StarSharks游戏打金攻略和收益详解
  20. 教你如何一键提取微信公众号文章的封面图

热门文章

  1. linux kernel的中断子系统之(三):IRQ number和中断描述符
  2. 单源最短路径: 差分约束和最短路径
  3. Saiku-ui代码结构分析
  4. tomcat和HTTP(r equest response )
  5. 转给计算机专业的准大学生!
  6. Libxml2使用指南
  7. git创建本地分支以及推送本地分之至远程分支
  8. CSS 为图片 增加边框效果
  9. 进入计算机专业学习的一些体会和思考以及今后的学习规划
  10. placement new的用法