目  录

一、思路

二、代码

三、效果


参考 https://blog.csdn.net/weixin_42259833/article/details/124398342

一、思路

因为黑色背景且旋转图片为矩形,找最长直线,计算直线角度,图片旋转,去掉多余黑色区域。

二、代码

import cv2
import numpy as np
import mathdef get_long_line(img):C = cv2.Canny(cv2.cvtColor(img, cv2.COLOR_BGR2HSV), 10, 200, apertureSize=3)  # 边缘检测 #10lines = cv2.HoughLines(C, 1, np.pi / 180, 20)  # 直线检测# 滤波img = cv2.blur(img, (3, 3))  # 5,5img = cv2.medianBlur(img, 5)for line in lines:rho = line[0][0]  # 第一个元素是距离rhotheta = line[0][1]  # 第二个元素是角度thetaif (theta < (np.pi / 4.)) or (theta > (3. * np.pi / 4.0)):  # 垂直直线pt1 = (int(rho / np.cos(theta)) + 490, 0 + 372)  # 该直线与第一行的交点# 该直线与最后一行的焦点pt2 = (int((rho - img.shape[0] * np.sin(theta)) / np.cos(theta)) + 490, img.shape[0] + 372)else:  # 水平直线pt1 = (0, int(rho / np.sin(theta)))  # 该直线与第一列的交点# 该直线与最后一列的交点pt2 = (img.shape[1], int((rho - img.shape[1] * np.cos(theta)) / np.sin(theta)))return (pt1, pt2)pass# 读取照片
L = cv2.imread('3.png')  # queryImage
# 高斯滤波
L = cv2.GaussianBlur(L, (3, 3), 1)
#获取最长直线
pt1, pt2 = get_long_line(L)
angle = 90-math.degrees(math.atan2(pt2[0]-pt1[0], pt2[1]-pt1[1]))
#图片旋转
rows,cols=L.shape[:2]
rotation_matrix=cv2.getRotationMatrix2D((cols//2,rows//2),angle,1)
image_rotation_0=cv2.warpAffine(L,rotation_matrix,(cols,rows))
# 得到新的位置
rows, cols = np.where(image_rotation_0[:, :, 0] != 0)
min_row, max_row = min(rows)+1, max(rows)-1
min_col, max_col = min(cols)+1, max(cols)-1
# 去除黑色无用部分
image_rotation_0 = image_rotation_0[min_row:max_row, min_col:max_col, :]#图片显示
cv2.line(L, pt1, pt2,(0,0,255) , 2)  # 绘制一条蓝线
cv2.imshow('a',L)
cv2.imshow('B',image_rotation_0)
cv2.waitKey(0)
cv2.destroyAllWindows()

三、效果

*原图的最长直线

*校正后效果 

Python+CV2实现黑色背景的旋转图片矫正回水平图片相关推荐

  1. opencv-python将彩色图片变回灰色图片

    简述 就是在读取的过程中,添加一个参数(意思是,将图片作为灰色数据进行加载) 代码 import cv2image = cv2.imread('Desktop.jpg', cv2.IMREAD_GRA ...

  2. 利用python识别图片中的条码及条码图片矫正和增强!

    前言 这周和大家分享如何用python识别图像里的条码.用到的库可以是zbar.希望西瓜6辛苦码的代码不要被盗了.(zxing的话,我一直没有装好,等装好之后再写一篇) 具体步骤 前期准备 用open ...

  3. python zxing 识别条码_详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强...

    前言 这周和大家分享如何用python识别图像里的条码.用到的库可以是zbar.希望西瓜6辛苦码的代码不要被盗了.(zxing的话,我一直没有装好,等装好之后再写一篇) 具体步骤 前期准备 用open ...

  4. 利用python识别图片中的条码(pyzbar)及条码图片矫正和增强

    利用python识别图片中的条码(pyzbar) 目录 利用python识别图片中的条码(pyzbar) 前言 具体步骤 前期准备 使用pyzbar 特殊情况处理(条码图片矫正和增强) 条码是颠倒的是 ...

  5. python图片旋转脚本_Python+OpenCV 实现图片无损旋转90°且无黑边

    0. 引言 有如上一张图片,在以往的图像旋转处理中,往往得到如图所示的图片. 然而,在进行一些其他图像处理或者图像展示时,黑边带来了一些不便.本文解决图片旋转后出现黑边的问题,实现了图片尺寸不变的旋转 ...

  6. python快速实现图像矫正_OpenCV-python 实现图片矫正

    先放效果图: 一个歪的数独棋盘 接下来,就是见证奇迹的时刻: 矫正之后的棋盘(只保留棋盘部分) 在没有看到opencv里面的几何变换之前,我一直都疑惑着说一些软件上面的自动矫正是什么原理,现在open ...

  7. 实现文字图片生成,文字图片旋转及文字图片扭曲(python版)

    旋转和扭曲主要用到仿射变换及透视变换,直接上代码: #conding:utf-8 import cv2 import numpy as np from PIL import Image,ImageDr ...

  8. python opencv显示图片一闪而过_解决Opencv+Python cv2.imshow闪退问题

    Opencv+Python cv2.imshow闪退 # 读入原始图像 origineImage = cv2.imread('./pic/6.jpeg') # 图像灰度化 # image = cv2. ...

  9. python cv2改变图片亮度

    使用Gamma校正来改变图片亮度 import cv2 import numpy as np def gamma_trans(img,gamma):#gamma大于1时图片变暗,小于1图片变亮#具体做 ...

最新文章

  1. java——慎用可变参数列表
  2. 模型与logit_互助问答第33期:条件logit模型相关问题
  3. 1.2、Android Studio为新设备创建一个模块
  4. WebService大讲堂之Axis2(2):复合类型数据的传递
  5. 安装PHP出现make: *** [sapi/cli/php] Error 1 解决办法
  6. linux c:关联变量的双for循环
  7. 封装一个流水号ID生成器:id-spring-boot-starter
  8. DCMTK:读取DICOM数据集的测试程序
  9. 耳目一新!令人膜拜的牛人简历!厉害的攻城师啊
  10. textarea输入中文和数字换行解决方法
  11. 五分钟搭建 Flash 视频直播站
  12. Mozilla FireFox 爆JAR URI处理跨站脚本漏洞 可偷窃Google帐户
  13. 基于单片机PID电机调速控制设计-基于单片机LED条屏显示温度和时间设计-基于单片机PM2.5雾霾检测处理控制设计-基于单片机SHT11温湿度采集报警系统设计-基于单片机8155秒表计时器系统设计
  14. 解决win10删除文件时找不到该项目的问题
  15. 如何更新google chrome浏览器
  16. python正态性检验_在python中做正态性检验示例
  17. 2022年10月总结 (距离激动人心的928已经过去一个多月了)
  18. Spring Boot+Spring Security:基于URL动态权限:自定义Filter - 第17篇
  19. EasyExcel解析动态表头及导出
  20. 动漫设计与制作计算机专业,计算机动漫设计与制作专业(毕业论文).doc

热门文章

  1. 图像处理(三)——中国传统工艺画风格的图像转换应用
  2. 【程序设计训练】3-15 公交系统
  3. 轴心时代的三大东方圣人老子、孔子和释迦牟尼
  4. 书籍推荐——一本老书,吴军老师《数学之美》
  5. 关于重装系统后没有以太网和wifi的问题解决
  6. 重装系统后安装的软件
  7. 安徽大学计算机学院张兴义教授,“2018年CCF合肥为新研究生导航” 开启复合型人才培养之路...
  8. 模板配置--后台管理系统
  9. byte json 互转_Json互转
  10. sublime text3安装python插件和flake8_让你用sublime写出最完美的python代码--windows环境-搜云库...