一种基于OpenCV的图片倾斜矫正方法

需求描述:

对倾斜的图片进行矫正,返回倾斜角度和矫正后的图片。

解决方法:

1、各种角度点被投影到一个累加器阵列中,其中倾斜角度可以定义为在最大化对齐的搜索间隔内的投影角度。

2、以不同的角度旋转图像,并为每次迭代生成像素的直方图。

3、为了确定倾斜角度,比较峰值之间的最大差异,并使用这个倾斜角度,旋转图像来纠正倾斜。

python 复制代码
#coding=utf-8
import cv2
import numpy as np

def rotate_image(image, angle):
    (h, w) = image.shape[: 2]
    center = (w // 2, h // 2)
    M = cv2.getRotationMatrix2D(center, angle, 1.0)
    corrected = cv2.warpAffine(image, M, (w, h), flags = cv2.INTER_CUBIC, \
        borderMode = cv2.BORDER_REPLICATE)
    return corrected

def determine_score(arr):
     histogram = np.sum(arr, axis = 2, dtype = float)
     score = np.sum((histogram[..., 1 :] - histogram[..., : -1]) ** 2, \
        axis = 1, dtype = float)
     return score

def correct_skew(image, delta = 0.1, limit = 5):
     thresh = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY_INV + \
        cv2.THRESH_OTSU)[1]
     angles = np.arange(-limit, limit + delta, delta)
     img_stack = np.stack([rotate_image(thresh, angle) for angle \
        in angles], axis = 0)
     scores = determine_score(img_stack)
     best_angle = angles[np.argmax(scores)]
     corrected = rotate_image(image, best_angle)
     return best_angle, corrected
if __name__ == "__main__":
    file_path=r'D:/_21.png'
    img = cv2.imread(file_path, 0)
    angle, corrected = correct_skew(img)
    print(angle)
    cv2.imwrite(r'D:/temp_' + file_path.split('/')[-1], corrected)

执行结果:

矫正前:

矫正后:

相关推荐
ShallWeL几秒前
Orin 上目标检测 + 大模型做端侧应用
人工智能·目标检测·大模型·端侧
A55566677787893 分钟前
2026国产OpenClaw替代方案商深度测评:政务级、轻量化、高性能、私有化厂商推荐
人工智能
今天AI了吗6 分钟前
【AI智能体】Hermes Agent 从部署到项目实战操作详解
java·人工智能·python·milvus
AI人工智能+7 分钟前
学位证书识别技术通过计算机视觉、自然语言处理和大模型推理相结合,实现了高精度、高效率的证书数字化处理
深度学习·计算机视觉·自然语言处理·ocr·学位证书识别
六边形战士DONK14 分钟前
16-估计量的评选标准[无偏性,有效性,相合性,均方误差准则]
人工智能·机器学习·概率论
心运软件24 分钟前
基于机器学习的智能邮件分类系统:从数据采集到模型部署全流程实战
人工智能·python·算法·随机森林·机器学习·分类·scikit-learn
苏灿烤鱼26 分钟前
GitHub Trending 榜首|GitHub #1 拆解|为什么「持久工作台」比临时沙箱更值得关注?(08.06)技术拆解
人工智能·typescript·agent
武子康28 分钟前
MCP 无状态核心之后:身份、任务、幂等与审计状态到底放在哪里
人工智能
gqk0131 分钟前
WINDOWS下搭建深度学习推理+训练环境
人工智能
D2aZXN3FhrDa7e21233 分钟前
中小企业对比美诚等获客系统,依据自动分级与销售人力节省需求
大数据·人工智能·佛山美诚科技有限公司