python图像变换教程(详解python-图像处理映射变换)
类别:脚本大全 浏览量:2193
时间:2021-10-27 10:07:45 python图像变换教程
详解python-图像处理映射变换做计算机视觉方向,除了流行的各种深度学习算法,很多时候也要会基础的图像处理方法。
记录下opencv的一些操作(图像映射变换),日后可以方便使用
先上一张效果图
图二和图三是同一种方法,只是变换矩阵不同,都是3点映射变换
图四使用的是4点映射变换
简单介绍下原理
图像都知道是3维(通道)的矩阵,前两维就是由1字节(0-255)数字填充的二维数组。数字大小代表颜色的深浅。
我们把变换前的原图作为x和y。变换后的图为u和v。将[x,y,1]乘上变换矩阵就可以得到对应的新的u和v。不同的变换矩阵有不同的作用(不同的变换方式)
所以现在就是求不同变换对应的不同的变换矩阵的过程
求这个矩阵 在opencv中直接就有方法
只需提供原图的三个点和你要变换之后的三个点的映射位置(3个原图点,3个映射点)就可以求出这个变换矩阵
当然了 你会发现不管怎么调整映射点 都不能任意变换
因为只给三个点时 变换之后的图其实只是原图的等比缩放,并不能做到随意映射的效果
这里opencv也提供了 四个点和四个映射的方法 求出对应的变换矩阵 ,最终得到任意映射的效果
代码如下:
|
# coding=gbk import cv2 import numpy as np import matplotlib.pyplot as plt plt.rcparams[ 'font.sans-serif' ] = [ 'simhei' ] #用来正常显示中文标签 plt.rcparams[ 'axes.unicode_minus' ] = false #用来正常显示负号 img = cv2.imread(r "test6.jpg" alt="python图像变换教程(详解python-图像处理映射变换)" border="0" /> img = img[:,:,[ 2 , 1 , 0 ]] cols,rows,ch = img.shape pts1 = np.float32([[ 0 , 0 ], [cols - 1 , 0 ], [ 0 , rows - 1 ]]) #三点映射 pts2 = np.float32([[ 0 , 0 ], [cols - 1 , 0 ], [ 80 , rows - 1 ]]) pts21 = np.float32([[ 0 , 0 ], [cols - 1 , 0 ], [ 0 , rows - 1 ]]) pts22 = np.float32([[cols * 0.2 , rows * 0.1 ], [cols * 0.9 , rows * 0.2 ], [cols * 0.1 , rows * 0.9 ]]) pts31 = np.float32([[ 0 , 0 ], [cols - 1 , 0 ], [ 0 , rows - 1 ],[cols - 1 ,rows - 1 ]]) #四点映射 pts32 = np.float32([[ 0 , 0 ], [cols - 1 , 0 ], [ 50 , rows - 1 ],[cols - 50 ,rows - 50 ]]) m = cv2.getaffinetransform(pts1,pts2) #求三点映射的变换矩阵 m2 = cv2.getaffinetransform(pts21,pts22) m3 = cv2.getperspectivetransform(pts31,pts32) #求四点映射的变换矩阵 dst = cv2.warpaffine(img,m,(rows + 120 ,cols)) #三点映射的变换函数 dst2 = cv2.warpaffine(img,m2,(rows,cols)) dst3 = cv2.warpperspective(img,m3,(rows + 40 ,cols + 50 )) #四点映射的变换函数 plt.subplot( 221 ) plt.imshow(img) plt.title( "原图" ) plt.subplot( 222 ) plt.imshow(dst) plt.title( "投影变换" ) plt.subplot( 223 ) plt.imshow(dst2) plt.title( "仿射原图变换" ) plt.subplot( 224 ) plt.imshow(dst3) plt.title( "仿射不规则变换" ) plt.show() |
以上所述是小编给大家介绍的python-图像处理(映射变换)详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
原文链接:https://www.cnblogs.com/bob-jianfeng/p/10574401.html
您可能感兴趣
- python和java的共同语法(Python和Java的语法对比分析语法简洁上python的确完美胜出)
- python的log函数(Python3 log10函数简单用法)
- python操作pandas(详解Python学习之安装pandas)
- python核心编程和python基础教程(从0开始的Python学习014面向对象编程推荐)
- python发送微信消息脚本(python实现微信每日一句自动发送给喜欢的人)
- 用python制作一个简单的小程序(Python简单基础小程序的实例代码)
- pythonsql注入检测(Python版Mssql爆破小脚本)
- python网络爬虫案例实战(python爬取cnvd漏洞库信息的实例)
- 基于pythonopencv的图片识别(Python Opencv实现图像轮廓识别功能)
- python 多进程读取文件(Python实现的多进程拷贝文件并显示百分比功能示例)
- pythonselenium自动化教程(python使用selenium实现批量文件下载)
- python 导入指定文件夹的模块(Python实现的在特定目录下导入模块功能分析)
- java集成钉钉发送消息(Python实现钉钉发送报警消息的方法)
- python读取mat文件(详解Python Matplot中文显示完美解决方案)
- python eval函数原理(浅谈Python中eval的强大与危害)
- 利用python合并pdf(Python合并同一个文件夹下所有PDF文件的方法)
- 毛戈平全国第一柜花落银泰 高端国货迎来 高光 时刻(毛戈平全国第一柜花落银泰)
- 14岁丧父 20岁丧母,从苦难走向辉煌的银泰创始人沈国军(14岁丧父20岁丧母从苦难走向辉煌的银泰创始人沈国军)
- 银泰集团董事长沈国军获评 北京影响力 十大企业家(银泰集团董事长沈国军获评)
- 15帅气男士发型,清爽时尚很有型,喜欢就试试(清爽时尚很有型)
- 哪几个历史人物被影协主席李雪健演的活灵活现(哪几个历史人物被影协主席李雪健演的活灵活现)
- 王伦狭隘,晁盖霸道,宋江奸诈骨头软,只有鲁智深才适合当寨主(王伦狭隘晁盖霸道)
热门推荐
- mybatis 一对多条件查询(mybatis collection 多条件查询的实现方法)
- python3.7保存文件(详解用python实现基本的学生管理系统文件存储版python3)
- sqlserver删除表的第一行数据(sql server删除前1000行数据的方法实例)
- python如何判断两个数组相同(Python实现的合并两个有序数组算法示例)
- python语法规则讲解(计算机二级python学习教程2 python语言基本语法元素)
- css时钟(网页中时光轴CSS实现)
- Service Unavailable解决方法
- react组件的参数怎样定义的(详解React中组件之间通信的方式)
- css圆角阴影代码(CSS实现曲面阴影效果的简单实例推荐)
- linuxread指令(Linux read命令的使用)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9