我是靠谱客的博主 真实春天,最近开发中收集的这篇文章主要介绍python常用代码总结python常用代码总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • python常用代码总结
    • 一、常用
      • 1、新建文件夹,并将特定的文件复制到文件夹下
      • 2、get_path获取路径的几种方式
      • 3、拆分字符串
      • 4、程序计时time
      • 5、判断文件夹 文件是否存在
    • 二、图像常用
      • 1、findcontours/drawcontours函数
      • 2、python 读取图像,宽高,resize,零矩阵定义
      • 3、遍历图像
      • 4、取轮廓的矩形框 rect
      • 5、图片PIL格式转numpy格式

python常用代码总结

一、常用

1、新建文件夹,并将特定的文件复制到文件夹下

# 遍历img_path下的图片,以图片名称新建文件夹,保存到path下,然后复制yaml_path,到每一个文件夹下
import os
import shutil
import numpy as np

img_path = 'I:/xj/Mask_RCNN_dataset_lane/ori'
path = 'I:/xj/Mask_RCNN_dataset_lane/json_To_dataset/'
yaml_path = 'I:/xj/Mask_RCNN_dataset_lane/info.yaml'

for filename in os.listdir(img_path):
    if filename.endswith(".png"):
        folder_path = path + filename[0:-4]
        os.makedirs(folder_path)
        shutil.copy(yaml_path, folder_path)# 将 .yaml 文件复制到 folder_path
        print (folder_path)

2、get_path获取路径的几种方式

2.1、使用使用os.walk()函数

import os
import glob
# 使用os.walk()函数
for root, dirs, files in os.walk("E:\work_diary\python_code\get_path"):
    # for name in dirs:
    #     print(os.path.join(root, name))  #整个子文件夹的目录
    # for name in files:
        # print(os.path.join(root, name))  #整个子文件的目录
    for name in files:
        if os.path.splitext(name)[1] == '.txt':
            print(name)
            print(os.path.join(root,name))  #输出想要的特定文件目录

2.2、使用glob函数

--golb函数,只能查找当前文件夹,不能遍历子文件
for ori_imgfile in glob.glob("E:\work_diary\python_code\get_path\"+"*.txt"):
    print(ori_imgfile)

2.3、os.listdir()函数

for filename in os.listdir(annotations_dir):
    if filename.endswith(".txt"):
        filepath = os.path.join(annotations_dir,filename)  #指定.txt文档路径
        imgname = filename[0:-4] + ".jpg"
        imgpath = os.path.join(input_dir,imgname)  #获取对应的 .png图像路径
        image = cv2.imread(imgpath)  #读取图像

3、拆分字符串

roiname = "12234_L.jpg"
splitnum0 = roiname.rindex("L")
splitnum1 = roiname.rindex("_")
splitnum2 = roiname.rindex(("."))
anno_filename = roiname[0:splitnum0+1] + ".txt"

4、程序计时time

import time
start_time = time.time()
...
...
end_time = time.time()
print (end - start)

5、判断文件夹 文件是否存在

#判断文件夹
import os
dirs = '/Users/joseph/work/python/'

if not os.path.exists(dirs):
    os.makedirs(dirs)
#判断文件
import os
filename = '/Users/joseph/work/python/poem.txt'

if not os.path.exists(filename):
    os.system(r"touch {}".format(path))#调用系统命令行来创建文件

二、图像常用

1、findcontours/drawcontours函数

https://blog.csdn.net/hjxu2016/article/details/77833336

contours, hierarchy = cv2.findContours(img_create, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# cv2是两个输出结果,cv3好像是三个输出结果

2、python 读取图像,宽高,resize,零矩阵定义

# 图片处理
    img_ori = cv2.imread(path_img_ori) # 读取原图
    img_cabinet = cv2.imread(path_img_cabinet) # 读取cabinet图
    print("img_cabinet_size**********: ", img_cabinet.shape)
    height, width = img_cabinet.shape[0:2]
    img_cabinet_resize = cv2.resize(img_cabinet,(int(width/scale_size), int(height/scale_size)),interpolation=cv2.INTER_NEAREST) # 缩放原图
    img_create = np.zeros((int(height/scale_size), int(width/scale_size), 1), np.uint8) # 图片新建
    img_create.fill(255) # 填充特定像素值

3、遍历图像

RGB格式:

for row in range(img_cabinet_resize.shape[0]):
    for col in range(img_cabinet_resize.shape[1]):
        x = img_cabinet_resize[row][col][0]
        y = img_cabinet_resize[row][col][1]
        z = img_cabinet_resize[row][col][2]
        if (x==0 and y==220 and z==220):
            img_create[row][col] = 225

4、取轮廓的矩形框 rect

rect = cv2.boundingRect(contours[i])# 包含四个变量,分别为左上角坐标和宽高
xmin = rect[0] * scale_size
ymin = rect[1] * scale_size
xmax = xmin + rect[2] * scale_size
ymax = ymin + rect[3] * scale_size
cv2.rectangle(img_ori, (xmin, ymin), (xmax, ymax), (0, 255, 255), 2)

5、图片PIL格式转numpy格式

首先确定 PIL具体是那种格式:比如 mask 图片 mask.mode()
在这里插入图片描述

cabinet_mask = np.array(mask)
or
cabinet_mask = cv2.cvtColor(np.asarray(mask), cv2.COLOR_RGB2BGR)

最后

以上就是真实春天为你收集整理的python常用代码总结python常用代码总结的全部内容,希望文章能够帮你解决python常用代码总结python常用代码总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部