前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >图像旋转矫正

图像旋转矫正

作者头像
裴来凡
发布于 2022-05-29 02:04:23
发布于 2022-05-29 02:04:23
78900
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import cv2
import numpy as np
import math
def fourier_demo():
    img=cv2.imread('C:/Users/xpp/Desktop/Lena.png',0)
    h,w=img.shape[:2]
    new_h=cv2.getOptimalDFTSize(h)
    new_w=cv2.getOptimalDFTSize(w)
    right=new_w-w
    bottom=new_h-h
    result1=cv2.copyMakeBorder(img,0,bottom,0,right,borderType=cv2.BORDER_CONSTANT,value=0)
    cv2.imshow('result1',result1)
    #傅里叶变换
    f=np.fft.fft2(result1)
    fshift=np.fft.fftshift(f)
    magnitude=np.log(np.abs(fshift))
    #二值化
    magnitude_uint=magnitude.astype(np.uint8)
    ret, thresh=cv2.threshold(magnitude_uint,11,255,cv2.THRESH_BINARY)
    print(ret)
    cv2.imshow('thresh',thresh)
    print(thresh.dtype)
    #霍夫直线变换
    lines=cv2.HoughLinesP(thresh,2,np.pi/180,30,minLineLength=40,maxLineGap=100)
    print(len(lines))
    lineimg=np.ones(nimg.shape,dtype=np.uint8)
    lineimg=lineimg*255
    piThresh=np.pi/180
    pi2=np.pi/2
    print(piThresh)
    for line in lines:
        x1,y1,x2,y2=line[0]
        cv2.line(lineimg,(x1,y1),(x2,y2),(0,255,0),2)
        if x2-x1==0:
            continue
        else:
            theta=(y2-y1)/(x2-x1)
        if abs(theta)<piThresh or abs(theta-pi2)<piThresh:
            continue
        else:
            print(theta)
    angle=math.atan(theta)
    print(angle)
    angle=angle*(180/np.pi)
    print(angle)
    angle=(angle-90)/(w/h)
    print(angle)
    center=(w//2,h//2)
    M=cv2.getRotationMatrix2D(center,angle,1.0)
    rotated=cv2.warpAffine(img,M,(w,h),flags=cv2.INTER_CUBIC,borderMode=cv2.BORDER_REPLICATE)
    cv2.imshow('line image',lineimg)
    cv2.imshow('rotated',rotated)
fourier_demo()
cv2.waitKey(0)
cv2.destroyAllWindows()

11.0 uint8 3 0.017453292519943295 0.022727272727272728 0.022723360841641067 1.3019526725788753 -88.69804732742112

算法:图像旋转矫正是通过修改幅度图像或相位图像方法来间接修改原空间图像。

链接:http://johnhany.net/2013/11/dft-based-text-rotation-correction/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图像处理与模式识别研究所 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
看 AI 如何抢救破烂文档
非结构化数据是指没有固定格式和规则的数据,例如文本、图片、视频、音频等。随着信息技术的迅速发展,非结构化数据越来越多,越来越重要,主要原因如下:
不吃西红柿
2023/10/16
2410
看 AI 如何抢救破烂文档
OpenCV实现文字矫正
原始图像 help(argv); CommandLineParser parser(argc, argv, keys); if (parser.has("help")) { help(argv); return 0; } string filename = parser.get<string>(0); Mat img = imread(filename, CV_LOAD_IMAGE_GRAYSCALE); if(
用户9831583
2022/06/16
8630
OpenCV实现文字矫正
使用OpenCV实现偏斜文档校正
使用OpenCV实现偏斜文档校正 纸质文档扫描中经常会发生扫描出来的图像有一定角度的偏斜,对后期的文档信息化OCR提取造成很大的干扰,导致OCR识别准确率下降从而影响文档信息化的结果。这个时候可以使用OpenCV对文档进行纠偏,最常见的文本纠偏算法有两种,分别是 基于FFT变换以后频率域梯度 基于离散点求最小外接轮廓 这两种方法各有千秋,相对来说,第二种方法得到的结果更加准确,第一种基于离散傅立叶变换求振幅的方法有时候各种阈值选择在实际项目中会有很大问题。 基于FFT变换以后频率域梯度 主要思路是先把图像转
OpenCV学堂
2018/04/04
2.6K0
使用OpenCV实现偏斜文档校正
使用傅里叶变换进行图像边缘检测
简单来说,傅里叶变换是将输入的信号分解成指定样式的构造块。例如,首先通过叠加具有不同频率的两个或更多个正弦函数而生成信号f(x),之后,仅查看f(x)的图像缺无法了解使用哪种或多少原始函数来生成f(x)。
小白学视觉
2020/04/15
1.7K0
机器学习-09-图像处理02-PIL+numpy+OpenCV实践
开源地理空间基金会中文分会 Pillow (PIL Fork) 10.0.1 文档
用户2225445
2024/04/14
5930
机器学习-09-图像处理02-PIL+numpy+OpenCV实践
OpenCV系列之傅里叶变换 | 三十
傅立叶变换用于分析各种滤波器的频率特性。对于图像,使用2D离散傅里叶变换(DFT)查找频域。一种称为快速傅立叶变换(FFT)的快速算法用于DFT的计算。关于这些的详细信息可以在任何图像处理或信号处理教科书中找到。请参阅其他资源部分。
磐创AI
2019/12/23
1.5K0
OpenCV系列之傅里叶变换 | 三十
OpenCV 系列教程5 | OpenCV 图像处理(中)
霍夫变换是一种特征提取技术,主要应用于检测图像中的直线或者圆。 OpenCV 中分为霍夫线变换和霍夫圆变换。
机器视觉CV
2019/11/12
1.7K0
OpenCV 系列教程5 | OpenCV 图像处理(中)
OpenCV与图像处理(四)
以下代码均在python3.6,opencv4.2.0环境下试了跑一遍,可直接运行。
Must
2020/07/28
6780
OpenCV与图像处理(四)
OpenCV与图像处理(五)
以下代码均在python3.6,opencv4.2.0环境下试了跑一遍,可直接运行。
Must
2020/07/28
7200
OpenCV与图像处理(五)
Python opencv图像处理基础总结(六) 直线检测 圆检测 轮廓发现
我还有改变的可能性 一想起这一点 我就心潮澎湃 文章目录 一、直线检测 使用霍夫直线变换做直线检测,前提条件:边缘检测已经完成 # 标准霍夫线变换 cv2.HoughLines(image, rho, theta, threshold, lines=None, srn=None, stn=None, min_theta=None, max_theta=None) image:经过边缘检测的输出图像,8位,单通道二进制源图像 rho:距离步长 theta:角度步长 threshold:阈值,只有
叶庭云
2020/09/17
8.6K0
Python opencv图像处理基础总结(六) 直线检测 圆检测 轮廓发现
【OpenCV】Chapter10.色彩转换与图像绘制
常见的色彩空间包括:GRAY 色彩空间(灰度图像)、XYZ 色彩空间、YCrCb 色彩空间、HSV 色彩空间、HLS 色彩空间、CIELab 色彩空间、CIELuv 色彩空间、Bayer 色彩空间等。
zstar
2022/09/28
2.7K0
【OpenCV】Chapter10.色彩转换与图像绘制
OpenCV:霍夫直线变换和霍夫圆变换
如果可以用数学形式表示形状,则霍夫变换是检测任何形状的一种比较流行的技术。即使形状有些破损或变形,也可以检测出形状。本文将讲解如何将它何作用于一条线。
用户3578099
2023/09/01
7340
OpenCV:霍夫直线变换和霍夫圆变换
【OpenCV】Chapter6.频率域图像滤波
OpenCV 中的cv.dft()函数也可以实现图像的傅里叶变换,cv.idft()函数实现图像傅里叶逆变换。
zstar
2022/09/26
1.6K0
【OpenCV】Chapter6.频率域图像滤波
【深度学习】实例第二部分:OpenCV
执行以下命令安装opencv-python库(核心库)和opencv-contrib-python库(贡献库)。注意:命令拷贝后要合成一行执行,中间不要换行。
杨丝儿
2022/02/28
1.8K0
【深度学习】实例第二部分:OpenCV
OpenCV的实用图像处理操作案例分享
图像处理适用于图像和视频。良好的图像处理结果会为后续的进一步处理带来很大的帮助,例如提取到图像中的直线有助于对图像中物体的结构进行分析,良好的特征提取会优化深度学习的结果等。今天我们来回顾一下图像处理中的最基础的,但是却非常实用的一些操作。
AI算法与图像处理
2020/09/29
9930
OpenCV的实用图像处理操作案例分享
频域变换
如果想了解更多物联网、智能家居项目知识,可以关注我的项目实战专栏。 喜欢就点一点在看
跋扈洋
2021/02/02
3540
频域变换
卷积滤波器与边缘检测
高低频率 高频图像是强度变化很大的图像。并且亮度级别从一个像素到下一个像素快速变化。低频图像可以是亮度相对均匀或变化非常慢的图像。这是一个例子中最容易看到的。
小飞侠xp
2018/08/29
1.9K0
OpenCV之cv2函数
1、 cv2.imread():读入图片,共两个参数,第一个参数为要读入的图片文件名,第二个参数为如何读取图片,包括
周小董
2019/03/25
7.4K0
OpenCV之cv2函数
【图像篇】OpenCV图像处理(七)---图像平移VS图像旋转
牛顿第一运动定律:物体加速度的大小跟作用力成正比,跟物体的质量成反比,且与物体质量的倒数成正比;加速度的方向跟作用力的方向相同。该定律是由艾萨克·牛顿在1687年于《自然哲学的数学原理》一书中提出的。
用户5410712
2022/06/01
1.3K0
【图像篇】OpenCV图像处理(七)---图像平移VS图像旋转
Python OpenCV 霍夫(Hough Transform)直线变换检测应用
在 OpenCV 中提供了两个霍夫直线检测的函数,一个是标准霍夫变换,另一个是概率霍夫变换。
玖柒的小窝
2021/09/20
2K0
Python OpenCV 霍夫(Hough Transform)直线变换检测应用
相关推荐
看 AI 如何抢救破烂文档
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档