边缘填充:

image = cv2.copyMakeBorder(image, add_width, add_width, add_width, add_width, cv2.BORDER_REPLICATE, 0)

一个是投影变换增强,一个是旋转增强

# -*- coding:utf-8 -*-
import cv2
import numpy as npdef rad(x):return x * np.pi / 180def rotate_3(img,angle_vari=30):w, h = img.shape[0:2]fov = 42anglex = np.random.uniform(-angle_vari, angle_vari)angley = np.random.uniform(-angle_vari, angle_vari)anglez = np.random.uniform(-angle_vari+10, angle_vari-10)# 镜头与图像间的距离,21为半可视角,算z的距离是为了保证在此可视角度下恰好显示整幅图像z = np.sqrt(w ** 2 + h ** 2) / 2 / np.tan(rad(fov / 2))# 齐次变换矩阵rx = np.array([[1, 0, 0, 0],[0, np.cos(rad(anglex)), -np.sin(rad(anglex)), 0],[0, -np.sin(rad(anglex)), np.cos(rad(anglex)), 0, ],[0, 0, 0, 1]], np.float32)ry = np.array([[np.cos(rad(angley)), 0, np.sin(rad(angley)), 0],[0, 1, 0, 0],[-np.sin(rad(angley)), 0, np.cos(rad(angley)), 0, ],[0, 0, 0, 1]], np.float32)rz = np.array([[np.cos(rad(anglez)), np.sin(rad(anglez)), 0, 0],[-np.sin(rad(anglez)), np.cos(rad(anglez)), 0, 0],[0, 0, 1, 0],[0, 0, 0, 1]], np.float32)r = rx.dot(ry).dot(rz)# 四对点的生成pcenter = np.array([h / 2, w / 2, 0, 0], np.float32)p1 = np.array([0, 0, 0, 0], np.float32) - pcenterp2 = np.array([w, 0, 0, 0], np.float32) - pcenterp3 = np.array([0, h, 0, 0], np.float32) - pcenterp4 = np.array([w, h, 0, 0], np.float32) - pcenterdst1 = r.dot(p1)dst2 = r.dot(p2)dst3 = r.dot(p3)dst4 = r.dot(p4)list_dst = [dst1, dst2, dst3, dst4]org = np.array([[0, 0],[w, 0],[0, h],[w, h]], np.float32)dst = np.zeros((4, 2), np.float32)# 投影至成像平面for i in range(4):dst[i, 0] = list_dst[i][0] * z / (z - list_dst[i][2]) + pcenter[0]dst[i, 1] = list_dst[i][1] * z / (z - list_dst[i][2]) + pcenter[1]warpR = cv2.getPerspectiveTransform(org, dst)result = cv2.warpPerspective(img, warpR, (h, w))return resultdef rotate(image, angle_vari=30):angle = np.random.uniform(-angle_vari, angle_vari)rows, cols = image.shape[:2]M = cv2.getRotationMatrix2D((cols / 2, rows / 2), angle, 1)dst = cv2.warpAffine(image, M, (cols, rows))return dstif __name__ == '__main__':img = cv2.imread(r"D:\data\face_mask\1/20200526_173738_452720.jpg")angle_vari = 30while True:result=rotate_3(img, angle_vari=angle_vari)cv2.imshow("result", result)c = cv2.waitKey()

python opencv投影变换增强相关推荐

  1. python opencv 常用增强 dct变换+侵蚀+扩张+索贝尔算子+直方图均衡化+光照平衡+

    裁剪操作 img=img[100:200,:,:] 通道置零 img[:,:,2]=0 侵蚀 扩张 frame = cv2.erode(frame, kernel=np.ones((5, 5))) # ...

  2. python opencv 投影变换 黑边

    def rotate_3(img,angle_vari=10):w, h = img.shape[0:2]fov = 42anglex = np.random.uniform(-angle_vari, ...

  3. Python OpenCV实战应用

    OpenCV实战应用 摘要 传统计算机视觉 传统特征提取方法 SIFT(尺度不变特征变换) HOG方向梯度特征图 SIFT和HOG的比较 LBP 建筑物轮廓提取 介绍 代码 API说明 车道线检测 介 ...

  4. 【Tool】Augmentor和imgaug——python图像数据增强库

    Augmentor和imgaug--python图像数据增强库 Tags: ComputerVision Python 介绍两个图像增强库:Augmentor和imgaug,Augmentor使用比较 ...

  5. python+opencv实现机器视觉基础技术(2)(宽度测量,缺陷检测,医学检测

     本篇博客接着讲解机器视觉的有关技术和知识.包括宽度测量,缺陷检测,医学处理. 一:宽度测量   在传统的自动化生产中,对于尺寸的测量,典型的方法就是千分尺.游标卡尺.塞尺等.而这些测量手段测量精度低 ...

  6. python图像增强_【Tool】Augmentor和imgaug——python图像数据增强库

    Augmentor和imgaug--python图像数据增强库 Tags: ComputerVision Python 介绍两个图像增强库:Augmentor和imgaug,Augmentor使用比较 ...

  7. Python+Opencv简易车牌识别(二):形态学运算,HSV颜色空间筛选与图像分割

    注:这是依然一个简单的车牌识别demo 1.前言 在上一篇Python+Opencv简易车牌识别(一):基于HSV颜色空间的图像分割中,我们讲了如何仅基于颜色来进行简单粗暴的车牌分割.今天我们考虑对图 ...

  8. 素描滤镜c语言算法,python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现).pdf...

    python opencv 图图像像处处理理(素素描描..怀怀旧旧..光光照照..流流年年..滤滤镜镜 原原理理及及实实现现) 这篇文章主要介绍了python 基于opencv对图像进行各种处理,帮助 ...

  9. 基于python+opencv的图像目标区域自动提取

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 一.提取纸张中的内容 一张照片中的感兴趣区域总是沿着x,y,z三个轴都有一定倾斜(如下图),要 ...

最新文章

  1. Python 中 zip() 函数的用法
  2. Eclipse 搭建struts2 spring3 hibernate3环境实战 待完善
  3. SPOJ Python Day2: Prime Generator
  4. *[topcoder]JumpFurther
  5. centos8配置本地光盘yum源_CentOS8 配置本地yum源的详细教程
  6. 零基础成为月薪过万前端开发工程师,很难吗?
  7. iOS6、7、8、9新特性汇总和适配说明
  8. plSQL中修改代码字体的大小
  9. 动态规划,计算股票最大收益
  10. 安装Realtek RTL8111/RTL8168网卡驱动详解(error~eth0:no such device)
  11. 计算机怎么关闭u盘系统还原,电脑系统还原错误怎么办
  12. 2022QS榜单发布!计算机专业排名MIT霸榜,清华排15,北大跌出TOP20
  13. python获取上周周一日期_python python日期算法 本周,上周,本月,上月,本季,上季,今年, 去年...
  14. 不是买一台电脑就能敲代码!学习java必须了解的计算机知识以及准备工作
  15. Java 特殊操作流之标准输出流(system.out.println的底层原理)
  16. 【转载】一个游戏地图生成的方案
  17. html中字号调节,设置页面字体大小 怎么调整ps界面字体的大小
  18. hdu dfs入门java_hdu1181变形课dfs/bfs/并查集三种解法(java)
  19. 【04】SAP ABAP性能优化 - 如何选用内表类型(STANDARD, SORTED, HASHED)?
  20. vmware黑苹果安装vmware tools方法

热门文章

  1. old DIB in res\*.ico
  2. Linux大棚版redis入门教程
  3. Linux搭建安卓开发环境
  4. Android 开发中的多线程编程技术
  5. OpenWRT中运行脚本报错
  6. Shell脚本个例二
  7. android 自定义event,Android运用onTouchEvent自定义滑动布局
  8. 优贝共享数据交易所网_2020.9.9号币圈简报:水天共享数据迁移,链淘公告明天开始减产...
  9. Ubuntu中安装最新Docker社区版
  10. leetcode 233 number of digit one