码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • OpenCV--图像的基本变换


    图像的基本变换

    • 代码和笔记

    代码和笔记

    import cv2
    import numpy as np
    
    """
    图像的基本变换
    """
    
    cat = cv2.imread('./img/cat.jpeg')
    
    """
    缩放 
    """
    # dsize:(499, 360)这里的宽高和numpy的行列是反过来的 interpolation插值算法
    new_cat = cv2.resize(cat, (499, 360), interpolation=cv2.INTER_NEAREST)
    # 按xy轴的比例进行缩放
    new_cat1 = cv2.resize(cat, dsize=None, fx=1.5, fy=0.5, interpolation=cv2.INTER_LINEAR)
    
    cv2.imshow('new_cat', new_cat)
    cv2.imshow('new_cat1', new_cat1)
    
    """
    翻转
    """
    # 0表示上下翻转,>0表示左右  <0左右上下
    new_cat2 = cv2.flip(cat, 0)
    
    cv2.imshow('new_cat2', new_cat2)
    
    """
    旋转
    """
    # ROTATE_90_CLOCKWISE 90度顺时针 ROTATE_180 180度 ROTATE_90_COUNTERCLOCKWISE 逆时针90度
    new_cat3 = cv2.rotate(cat, rotateCode=cv2.ROTATE_90_COUNTERCLOCKWISE)
    cv2.imshow('new_cat3', new_cat3)
    
    """
    仿射变换(原图和一个矩阵进行运算)
    """
    # 平移操作
    # 变换矩阵,至少是float32位 改变200位置的数,往由右平移,变成负数就是往左,100位置的数,往下,变成负数就是往上
    M = np.float32([[1, 0, 200], [0, 1, 100]])
    new_cat4 = cv2.warpAffine(cat, M, (499, 360))
    cv2.imshow('new_cat4', new_cat4)
    
    # 在进行旋转操作时,不方便计算变换矩阵
    # 获取变换矩阵 (100, 100), 15, 1 以坐标(100, 100)的点旋转(规定按照逆时针)15度,1表示不缩放
    M1 = cv2.getRotationMatrix2D((100, 100), 15, 1)
    
    # 通过三个点不通过角度确定变换角度,需要原始图片的三个点坐标和变换后的三个对应坐标
    src = np.float32([[200, 100], [300, 100], [200, 300]])
    dst = np.float32([[100, 150], [360, 200], [280, 120]])
    M2 = cv2.getAffineTransform(src, dst)
    
    # 透视变换--把斜的图变正
    # 获取变换矩阵,需要原图四个坐标和变换后的四个对应坐标
    src1 = np.float32([[200, 100], [300, 100], [200, 300], [150, 240]])
    dst1 = np.float32([[0, 0], [360, 0], [0, 120], [360, 120]])
    M3 = cv2.getPerspectiveTransform(src1, dst1)
    # (360, 120)输出大小
    new_cat5 = cv2.warpPerspective(cat, M3, (360, 120))
    
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    
    
  • 相关阅读:
    java毕业设计宠物交易平台Mybatis+系统+数据库+调试部署
    【docker】安装clickhouse
    【实测】Python 和 C++ 下字符串查找的速度对比
    卷积神经网络结构设计,卷积神经网络参数设置
    Linux学习第13天:嵌入式LinuxLED驱动开发:一字一符总见情
    vue使用axios,mock请求假数据,脱离后端的限制!!!这一篇就够了
    【Python】-- 集合的常用方法
    记:lorawan协议
    【效率提升】倍速插件Global Speed
    The Journey from Idea to Production: A Product Designer‘s Perspective
  • 原文地址:https://blog.csdn.net/GamBleout/article/details/139747593
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号