在Pycharm中用OpenCV的imutils模块矫正图片

在OpenCV中有一个imutils模块在图形变换中非常方便,下面就是用该模块对图片进行仿射变换的代码。

 1 from imutils import perspective
 2 from skimage.filters import threshold_local
 3 import cv2
 4 import imutils
 5 # 边缘扫描
 6 image = cv2.imread("C:\\Users\\lenovo\\Pictures\\t1.png")
 7 ratio = image.shape[0] / 500.0# 比例
 8 orig = image.copy()
 9 image = imutils.resize(image, height = 500)
10 # 灰度转换及边缘查找
11 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
12 gray = cv2.GaussianBlur(gray, (5, 5), 0)
13 edged = cv2.Canny(gray, 75, 200)                          # 边缘检测
14 # 只保留轮廓
15 cnts = cv2.findContours(edged.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)#通过边缘图像找到轮廓
16 cnts = cnts[0] if imutils.is_cv2() else cnts[1]
17 # 用以区分OpenCV2.4和OpenCV3
18 cnts = sorted(cnts, key = cv2.contourArea, reverse = True)[:5] # 保留最大轮廓
19 for c in cnts:
20     peri = cv2.arcLength(c, True)
21     approx = cv2.approxPolyDP(c, 0.02 * peri, True)            # 轮廓点
22     if len(approx) == 4:                                       # 表明找到四个轮廓点
23         screenCnt = approx
24         break
25 # 转为鸟瞰图
26 warped = perspective.four_point_transform(orig, screenCnt.reshape(4, 2) * ratio)
27 warped = cv2.cvtColor(warped, cv2.COLOR_BGR2GRAY)              # 灰度转换
28 T = threshold_local(warped, 11, offset = 10, method = "gaussian")
29 warped = (warped > T).astype("uint8") * 255
30 cv2.imshow("Original", imutils.resize(orig, height = 650))
31 cv2.imshow("Scanned", imutils.resize(warped, height = 650))
32 cv2.waitKey(0)

变换后的图片如下图所示

原文地址:https://www.cnblogs.com/yangyue-kai/p/11639301.html

时间: 2024-10-16 16:20:42

在Pycharm中用OpenCV的imutils模块矫正图片的相关文章

在Pycharm编辑器中调用getpass模块

兴趣来潮想复习一下python中的getpass模块编辑器使用Pycharm很简单的代码写完执行不到输入部分代码如下 import getpass print("""  --------------------**************----------------- """) #ss=getpass.getpass('please The password:') p = getpass.getpass('input your passwor

OpenCV 的四大模块

前言 我们都知道 OpenCV 是一个开源的计算机视觉库,那么里面到底有哪些东西?本文将为你解答这个问题. 模块一:CV 这个模块是 OpenCV 的核心,它包含了基本的图像处理函数和高级的计算机视觉算法. 模块二:HighGUI 这个模块包含了图像和视频的基本 GUI 输入输出函数. 模块三:MILL 这个模块是计算机学习库,包含一些基于统计的分类和聚类工具. 模块四:CXCORE 这个模块包含了基本数据结构和一些最基本的函数.上面四个模块都要调用此模块. 下图可形象表述OpenCV的五大模块

【OpenCV】OpenCV中GPU模块使用 (转)

CUDA基本使用方法 在介绍OpenCV中GPU模块使用之前,先回顾下CUDA的一般使用方法,其基本步骤如下: 1.主机代码执行:2.传输数据到GPU:3.确定grid,block大小: 4.调用内核函数,GPU运行程序:5.传输结果到CPU:6.继续主机代码执行. 下图是两个向量相加的简单示例程序和处理流图. 注意的问题:cu,cpp文件的组织 内核函数和其wrapper函数置于cu文件中. 在cpp文件声明wrapper函数,并调用wrapper函数. wrapper函数的声明定义需加ext

【OpenCV2】MFC中用OPENCV如何将图片显示在指定位置?

在opencv在开发过程中,我想最频繁的操作(之一)莫过于显示图片了. 学过OpenCV的同学都知道,调用cv::imshow()(或者C版本的ShowImage())可以轻而易举的将图片显示出来. 但是,它会创建一个不这么协调的对话框来显示这个图片,那么在MFC中我们如何让图片显示在指定的位置上呢? 先给个结果图(我使用的是VS2010+OpenCV2.4.8): 第一步: 创建一个基于MFC的基本对话框框架了.配置OpenCV环境 第二步:(如果是使用2.2版本以下的跳过) 我们要使用一个非

使用opencv的nonfree模块

系统ubuntu14.04 问题:安装的opencv没有nonfree模块,用不了sift算法 安装: sudo apt-get update sudo add-apt-repository --yes ppa:xqms/opencv_nonfree sudo apt-get update sudo apt-get install libopencv-nonfree-dev 在cmake中添加链接库: 首先查找链接库位置 find /usr -name libopencv_nonfree.so

如何在Pycharm中添加新的模块

在使用Pycharm编写程序时,我们时常需要调用某些模块,但有些模块事先是没有的,我们需要把模块添加上去. 最近在学习爬虫,写了下面几行代码: 结果出现错误 错误ModuleNotFoundError: No module named 'bs4'的意思是未找到名为bs4的模块,我们就需要pycharm上安装'bs4'这个模块.方法如下: 1.点击File,选择Default Settings选项 2.选择project interpreter选项 3.点击3.6.3选项(我的为python3.6

python3在pycharm中为什么导入random模块不能用? TypeError: 'module' object is not callable

新手学python求大神指导,也用sys导入了random.py的路径,仍然不行. 刚刚排错貌似找到了问题的原因...那是因为我在pycharm中新建的python文件名就是random,所以当前目录下就有一个random.py文件而且是自己写的,所以它在sys.path中会先找到自己定义的random.py并调用之,因为自己的什么都没有,所以就呵呵了:改了文件名字后就ok了 要多注意文件名这种情况,有时候文件名与系统的模块重名了,就出这种莫名其妙的错,也不方便查错 python3在pychar

rt5350 捕获sn9c291 ov9712 模块jpeg图片效果

将sonix的sn9c291+ov9712的驱动在rt5350加载成功后,产生两个节点,video0,和video1,但是会报下面的错误,暂时未做分析 # usb 1-1.2: new high speed USB device using rt3xxx-ehci and address 4 usb 1-1.2: configuration #1 chosen from 1 choice uvcvideo: Found UVC 1.00 device USB 2.0 Camera (0c45:6

基础学习笔记之opencv(6):实现将图片生成视频

基础学习笔记之opencv(6):实现将图片生成视频 在做实验的过程中.难免会读视频中的图片用来处理,相反将处理好的图片又整理输出为一个视频文件也是非经常常使用的. 以下就来讲讲基于opencv的C++版本号中图片输出视频是怎么实现的. 本次试验的数据为摇摆的树枝树叶图片,Waving Trees,其来源网址为: http://research.microsoft.com/en-us/um/people/jckrumm/WallFlower/TestImages.ht 该数据全由bmp图片组成.