当前位置: 首页 > 编程日记 > 正文

CV00-03-CV基本操作2

基本操作2

Similarity Transform相似变换

Similarity Transform相似变换:图像形状大小不变,位置发生变化。比如:做平移、旋转。相似变换具有保角性、保比例性,经过相似变换以后原有的角度和比例保持不变。确定一个相似变换矩阵需要2对点(原图像2个点,对应变换后图像2个点)。OpenCV中相似变换的API如下。

import cv2IMG = cv2.imread('lena.jpg', 1)
# 获取旋转矩阵,旋转中心、角度、缩放值
M = cv2.getRotationMatrix2D((IMG.shape[1] / 2, IMG.shape[0] / 2), 30, 0.7)
# 再通过旋转矩阵M求得变换后的图像
IMG_ROTATE = cv2.warpAffine(IMG, M, (IMG.shape[1], IMG.shape[0]))
cv2.imshow('lena', IMG)
cv2.imshow('lena_rotation', IMG_ROTATE)
key = cv2.waitKey()
if key == 27:cv2.destroyAllWindows()pass

Affine Transform仿射变换

Affine Transform仿射变换:图像形状变为平行四边形、旋转的平行四边形。还是在一个平面内的变换。确定一个仿射变换矩阵需要3对点(原图像3个不在同一直线上的点、对应变换后图像3个点)。OpenCV中仿射变换的API如下。

import cv2
import numpy as npIMG = cv2.imread('lena.jpg', 1)
height = IMG.shape[0]
width = IMG.shape[1]
# 变换前图像上3个点pts1和对应的变换后图像上3个点pts2
pts1 = np.float32([[0, 0], [width - 1, 0], [0, height - 1]])
pts2 = np.float32([[width * 0.2, height * 0.1], [width * 0.9, height * 0.2], [width * 0.1, height * 0.9]])
# 获取放射变换矩阵
M = cv2.getAffineTransform(pts1, pts2)
IMG_AFFINE = cv2.warpAffine(IMG, M, (width, height))cv2.imshow('image', IMG)
cv2.imshow('image_affine', IMG_AFFINE)
key = cv2.waitKey()
if key == 27:cv2.destroyAllWindows()pass

Perspective Transform透视变换

Perspective Transform透视变换:在3D条件下的变换,图像变为平行四边形或旋转的平行四边形,但图片与屏幕呈现角度。确定一个透视变换需要4对点。OpenCV中API调用如下。

import cv2
import numpy as npIMG = cv2.imread('lena.jpg', 1)
height = IMG.shape[0]
width = IMG.shape[1]pts1 = np.float32([[0, 0],[0, width - 1],[height - 1, 0],[height - 1, width - 1]])
pts2 = np.float32([[height * 0.1, width * 0.15],[height * 0.2, width * 0.73],[height * 0.78, width * 0.11],[height * 0.82, width * 0.86]])
M = cv2.getPerspectiveTransform(pts1, pts2)
IMG_PERSPECTIVE = cv2.warpPerspective(IMG, M, (height, width))cv2.imshow('image', IMG)
cv2.imshow('image_perspective', IMG_PERSPECTIVE)
key = cv2.waitKey()
if key == 27:cv2.destroyAllWindows()pass

相关文章:

[LeetCode] [C++] 第一轮刷题总结(持续更新~~~)

LeetCode 解题报告 LC_1_解题报告LC_2_解题报告LC_3_解题报告LC_4_解题报告LC_5_解题报告LC_6_解题报告LC_7_解题报告LC_206_解题报告LC_237_解题报告LC_344_解题报告 LeetCode 1. Two Sum 解题思路:两次循环遍历数组,找到两个元素和等于target 注意点&…

Android Studio 在项目中引用第三方jar包

在Android Studio项目中引用第三方jar包的方法: 步骤: 1、在build.gradle文件中添加如下代码: 备注:要添加在Android作用域下 sourceSets {main {jniLibs.srcDirs [libs]}} 点击【Sync Now】,会生成jniLibs文件夹 找到…

android专栏目录

android专栏目录 Android基础篇 android专题-数据库room android专题-蓝牙扫描、连接、读写 Android专题-常用第三方框架 Android高级篇 Android架构篇-1 项目组织架构 Android架构篇-2 国际化多语言 Android架构篇-3 网络接口封装 Android架构篇-4 架构模式MVVM Android架…

东北大学计算机分数线2017,东北大学2017年本科一批录取分数线(全国)

东北大学2017年全国各省各批次集中录取时间为7月6日-27日,在各省录取结束的分批次分科类录取最低分将在本页面持续更新公布,考生录取结果可通过关注东北大学招生办官方微信公众号(neuzs-1923)录取专区查询,最终录取结果请以考生收到的录取通知…

CV00-04-卷积

卷积概念 由于不好进行文字描述(懒),我直接推荐一个博客图像卷积,讲解图像卷积的概念。 图像卷积操作(convolution),或称为核操作(kernel),是进行图像处理的…

unity项目build成webgl时选择生成目录(解决方法)

在unity里点击File>>Build Settings...>>勾选你要生成的Scenes>>选择webgl>>后面Development Build不要勾选:点击build后会让你选择生成的目录,此处要慎重选择,否则会报错! 不要选择到项目所在目录&#…

STL中的nth_element()方法的使用

STL中的nth_element()方法的使用 通过调用nth_element(start, startn, end) 方法可以使第n大元素处于第n位置(从0开始,其位置是下标为 n的元素),并且比这个元素小的元素都排在这个元素之前,比这个元素大的元素都排在这个元素之后&…

Android架构篇-2 国际化多语言

Android架构篇-2 国际化多语言 实现功能: 1.默认采用系统语言 2.语言切换后实时生效 3.支持中英文 4.我的->设置->切换语言 思路:app首次初始设置为系统语言,用户在app内切换语言时发送语言切换事件,刷新所有页面 在AppBaseActivity、AppBaseFragment通过EventB…

齐鲁工业大学计算机读研,齐鲁工业大学考研难吗

齐鲁工业大学考研难吗?1、齐鲁工业大学考研难度算是比较容易。不在大学考研难度排名前100名单之内。2、考研究生难易程度还是看招生院校的地域、名气、排名等因素,生源不同,竞争力度也不同。发达地区特别是像北京,上海这样的大城市…

Python基础18-常用模块之os、sys、json、pickle、shelve、xml、re、logging、configparse、hashlib等

目录 os、os.path sys json pickle、shelve、xml、re、logging、configparse、hashlib未完待续…… os、os.path Python的os模块里面定义了常用的路径、文件操作。 os.curdir # curdir相对路径的当前路径“点” os.pardir # pardir相对路径的父目录“点点”。 os.sep …

剑指offer 重建二叉树 python

题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 样例 输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6} 返回二叉树头节点想法: 使用递归,既…

C#中的Liststring泛型类示例

在C#代码中使用一系列字符串(strings)并需要为其创建一个列表时&#xff0c;List<string>泛型类是一个用于存储一系列字 符串(strings)的极其优秀的解决办法。下面一起有一些List<string>泛型类的示例&#xff0c;一起来看看吧。 List示例 下面是一个使用C#创建一个…

计算机检索的优点,专利检索与分析系统拥有哪些优势?

专利检索与分析系统拥有哪些优势&#xff1f;现在很多朋友都在了解专利检索与分析系统又有哪些优势&#xff0c;因为他们需要使用这些系统&#xff0c;不少朋友都会利用业余时间搞各种发明专利&#xff0c;并申请发明专利&#xff0c;在申请之前&#xff0c;人们就需要对专利进…

Android架构篇-1 项目组织架构

Android架构篇-1 项目组织架构 模块化分层 1.结构清晰,各模块代码分离,符合高内聚低耦合,快速定位查找代码 2.团队协作开发灵活,互不影响,各模块完成后合并即可完成整体app 3.抽离公共层、模块层、业务层,方便维护管理 分层架构图 App下的Home(首页)、Mine(我的)、Log…

Python基础19-面向对象基础

目录 面向对象概述 面向对象的一种实现 类的相关知识 对象的相关知识 面向对象属性的查改增删操作 类属性的查改增删 对象属性的查改增删 关于类、对象属性容易混淆额或忽略的地方的说明 面向对象概述 编程发展至今有面向过程编程、函数式编程、面向对象编程三大流派&…

《一杯沧桑》有感

《一杯沧桑》 “每一个人的一生&#xff0c; 都是一仅仅杯子。 仅仅是杯子的大小不一样。 有些杯子&#xff0c; 它能够装下一片汪洋&#xff0c; 而有些杯子&#xff0c; 它却装不下一点忧伤。 …

Android架构篇-3 网络接口封装

Android架构篇-3 网络接口封装 实现功能: 1.暴露参数请求地址url、请求方法method、请求参数params、请求头header、请求响应response、https请求证书 2.支持get、post、文件上传下载、https证书 以封装OKhttp为例: 接口定义 业务层接口定义 public class BusinessSer…

域中计算机设定重启,域中添加计算机设定的步骤

我来和你详细说下吧&#xff01;既然你已经建立域了&#xff0c;那么就好办了&#xff01;1。为各台电脑建立域帐号&#xff01;2.在每台电脑上加域&#xff01;a、首先在每台电脑上将用户的权限降到USER。b、右键选我的电脑&#xff0c;在计算机名称里面把域一栏里面输入你自己…

浅谈 拓扑排序

我是什么时候想到要学拓扑排序的呢&#xff1f; 在一次模考的时候&#xff0c;有这样一道题&#xff0c;叫做食物链&#xff0c;我是写了记忆化搜索的&#xff0c;然而全场都写了拓扑板子 后来发现我居然不会这么基础的算法&#xff0c;有点慌 下面进入正题 拓扑排序是针对一些…

Python基础20-面向对象:静态、组合、继承与派生、多态、封装、反射、内置attr方法等

目录 静态 静态属性property 类方法classmethod 静态方法staticmethod 组合 继承与派生 继承与派生 继承顺序 在子类中调用父类方法与super 多态 封装 反射 模块的动态导入 内置的attr方法 带双下户线的attr方法__setattr__、__getattr__、__delattr__ __getat…

C++ primer 第三章笔记

chapter 3 字符串,向量,数组 # 命名空间的using声明 头文件不应包含using声明; 注:using namespace std; #标准库类型string 1.string 表示可变长的字符序列; 2.#include<string> 3.字符串字面量 与 string 是不同类型; 4.cctype头文件种定义了一组标准库函数(改变某个字…

街篮最新服务器,《街篮》全新两组服务器开启 与你一起迎新年!

2016还剩下几个小时&#xff0c;2017即将到来。为了庆祝新的一年到来&#xff0c;《街篮》两组全新的服务器“闻鸡起舞”与“金鸡独立”正式与大家见面&#xff01;本次新服务器将在官服和混服同时开启&#xff0c;其中“闻鸡起舞”属于G系的新服务器&#xff0c;而“金鸡独立”…

Android架构篇-4 架构模式MVVM

Android架构篇-4 架构模式MVVM MVVM原理 #mermaid-svg-CJmTYPxP5GkKNMic .label{font-family:trebuchet ms, verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-CJmTYPxP5GkKNMic .label text{fill:#333}#mermaid-svg-CJmTYPxP5GkKNM…

jupyter安装与初探

安装jupyter jupyterlab和jupyter notebook的关系暂时没有搞清楚。先都安装了吧&#xff0c;用用再说。 选择国内镜像&#xff0c;避免万里长城的干扰。 pip install jupyterlab -i http://uni.mirrors.163.com --trust-host uni.mirrors.163.com pip install jupyter noteb…

android专题-数据库Room

android专题-数据库Room Room介绍 room是Google官方推荐的ORM数据库框架&#xff0c;抽象出sqlite访问的数据库。 包含三大组件&#xff1a; Entity 定义 表结构&#xff0c;每个entity类对一个表&#xff0c;默认会把entity类所有字段都创建为表字段Dao 定义entity类的CRUD…

CentOS 6.7快速搭建lamp环境

安装前要关闭防火墙&#xff0c;防止外网不能访问&#xff0c;这一点很重要&#xff0c;要不然外网访问不了&#xff1b; ①关闭防火墙&#xff1a;service iptables stop ②永久关闭防火墙&#xff1a;chkconfig iptables off ③查看防火墙状态&#xff1a;service iptables …

1005 生日礼物

1005 生日礼物 时间限制: 1 s空间限制: 128000 KB题目等级 : 黄金 Gold题解题目描述 Description9月12日是小松的朋友小寒的生日。小松知道小寒特别喜欢蝴蝶&#xff0c;所以决定折蝴蝶作为给小寒的生日礼物。他来到了PK大学最大的一家地下超市&#xff0c;在超市里&#xff0c…

css多行省略号兼容ie,css超出2行部分省略号……,兼容ie

html>Page Title.wrap {height: 40px;line-height: 20px;overflow: hidden;}.wrap .text {float: right;margin-left: -5px;width: 100%;word-break: break-all;}.wrap::before {float: left;width: 5px;content: ‘‘;height: 40px;}.text {position: relative;line-height…

机器学习01-定义、线性回归、梯度下降

目录 一、定义 What is Machine Learning 二、建模 Model Representation 三、一元线性回归 Linear Regression with One Variable 3.1 一元线性归回的符号约定 Notation 3.2 一元线性回归 Linear Regression with One Variable 3.3 代价函数 Cost Function 3.4 梯度下降…

android专题-蓝牙扫描、连接、读写

android专题-蓝牙扫描、连接、读写 概念 外围设备 可以被其他蓝牙设备连接的外部蓝牙设备&#xff0c;不断广播自身的蓝牙名及其数据&#xff0c;如小米手环、共享单车、蓝牙体重秤 中央设备 可以搜索并连接周边的外围设备&#xff0c;并与之进行数据读写通讯&#xff0c;…