边缘填充:

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. linux longlong大小,Linux基本数据类型大小——int,char,long int,long long int
  2. ASP.Net 使用css换肤(转)
  3. java注解判断字段是否存在_使用注解和反射判断指定的字段不能为空
  4. Oracle 11g中创建实例
  5. HTML5的非主体结构元素(header、footer、hgroup、assress)
  6. 跟父母还是要保持一定的距离感
  7. 如何用计算机算乘法,计算机如何做乘法运算的?
  8. 储户诉银行虚假宣传 微众银行智能存款产品屡遭用户投诉
  9. RGB色彩,HSV色彩模式、灰度图,亮度,对比度,饱和度、图像平滑、降噪、锐化、增强
  10. Linux Thermal Framework分析及实施
  11. [编程题]evaluate-reverse-polish-notati
  12. 青岛理工大学转专业到计算机难不难,2021年青岛理工大学大一新生转专业及入学考试相关规定...
  13. win10/11如何安装安卓app?带你使用华为移动应用引擎
  14. 2020作为一个资深的Android开发者需要掌握哪些技能?
  15. ShareSDK 抖音平台注册
  16. Datawhale-机器学习算法-Task3 EM算法
  17. 安徽电信翼拍照显示服务器异常,人像拍照环境指南
  18. python毕业设计作品基于django框架 二手物品交易系统毕设成品(8)毕业设计论文模板
  19. JS 大文件分割上传
  20. The Church-Turing thesis

热门文章

  1. 进程特征码遍历VC版
  2. TCP/IP详解--第二章
  3. Java学习之switch语句
  4. Android消息广播的使用
  5. python3之request用法_如何扩展python3 BaseHTTPRequestHandler类,以便可以使用成员variab调用函数...
  6. mysql hang住_mysql 5.7不定期的hang住重启-问答-阿里云开发者社区-阿里云
  7. 宝塔如何备份网站_学习织梦网站必需会的一件事:织梦网站数据备份
  8. 计算机应用基础知识点.pdf,《计算机应用基础》复习知识点.pdf
  9. linux 打开telnet登录,linux开启telnet
  10. SDK 和 API 的区别是什么