opencv python 输入键盘旋转任意角度图像

while(读取一个字符)
        读取图像
        if 字符 = r
            旋转一个角度
        else if 字符 = s
            保存图像
        else if 字符 = q
            break;    
from pynput import keyboard

import cv2
import numpy as np
import re

import cv2 as cv
import numpy as np
import os
#读取所有图像 ,重命名为VOC格式,选取部分图像进行平移变换

import os.path
import glob



def rotateImg(img,angel):
    rows, cols = img.shape
    M = cv2.getRotationMatrix2D(((cols - 1) / 2.0, (rows - 1) / 2.0), angel, 1)  # 旋转中心x,旋转中心y,旋转角度,缩放因子
    img = cv2.warpAffine(img, M, (cols, rows))  #在内存里完成了旋转
    cv2.namedWindow("旋转图像")
    cv2.imshow('旋转图像', img)
    cv2.waitKey(1000)
    cv2.destroyWindow("旋转图像")




if __name__ == '__main__':

    SourceImgPath = "C:\\darknet-master\\VOCdevkit\\VOC2007\\JPEGImages" + '\\'  # 文件路径
    total_sou = os.listdir(SourceImgPath)  # 获得所有图片名字
    #旋转图像
    for img_source in total_sou:
        ImgPath = os.path.join('%s%s' % (SourceImgPath, img_source))  # 获得文件夹下所有文件的路径   读取路径和保存路径
        img1 = cv2.imread(ImgPath, 0)  #读取图像

        # cols-1 and rows-1 are the coordinate limits.
        rotate_angel = 5

        while 1:
            line = input()
            print(line[0:1])
            if (line[0:1] == 'r'):  # 寻找到合适的旋转角度
                cv2.destroyAllWindows()  # 关闭之前的窗口
                rotateImg(img1, rotate_angel)#传参是非引用
                rotate_angel += 30
            elif (line[0:1] == 's'):
                #先旋转
                rows, cols = img1.shape
                M = cv2.getRotationMatrix2D(((cols - 1) / 2.0, (rows - 1) / 2.0), rotate_angel, 1)  # 旋转中心x,旋转中心y,旋转角度,缩放因子
                img1 = cv2.warpAffine(img1, M, (cols, rows))  # 在内存里完成了旋转
                #再保存
                cv.imwrite(ImgPath, img1)
            elif (line[0:1] == 'q'):
                break  # 下一张图像

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值