python读取单个文件,opencv画矩形框

1 python读取单个文件

附代码,中间的部分注释代码可以不用管,留着只是方便自己以后查看。

with open('plane.txt', 'r') as f: # 打开当前文件夹下面的plane.txt文件,文件打开操作区别,可以参考这个对文件读写进行了解https://www.cnblogs.com/zyber/p/9578240.html
    lines = f.readlines()
    splitlines = [x.strip().split(' ')  for x in lines]# strip()是删除,split()是分割。
    #有关strip()和split()函数的用法,参见
    #https://www.cnblogs.com/yyxayz/p/4034299.html
    #https://www.jb51.net/article/104453.htm
    
    #print(splitlines)
    #print(len(splitlines))
    splitlines = splitlines[2:] #此时splitlines是矩阵,矩阵基本操作,这句意思是跳过文件前两行不进行处理。这里主要区分数组np.array和列表list区别。
    for splitline in splitlines:
        #print(splitline)
        #print(len(splitline))
        #print(float(splitline[1]))
        if(float(splitline[1]) >= 0.5):
            #print(float(splitline[1]))
            print(splitline)
            i=i+1
            splitline = splitline[2:]#这是1维的,不是矩阵,对应前面矩阵,这操作表示跳过前两个值不处理。
            print(splitline)
            
            x, y, x1, y1 = splitline#这四个值都是字符串类型str,python没有字符类型,单个字符的类型被称作只含有一个字符的字符串类型
            x, y, x1, y1 = float(x), float(y), float(x1), float(y1)#这里需要注意,不能直接用int()转换,原因是int()只能包含数字,不能包含.之类的,否则报错,具体错误参考https://blog.csdn.net/qq_41891803/article/details/81321323
            #print(x, y, x1, y2)
            draw_1=cv2.rectangle(image, (int(x),int(y)), (int(x1),int(y1)), (0,255,0), 2)
            
#print(i)

2 opencv在图片上画矩形框

2.1 图片操作

附代码

import cv2
# 在当前文件夹下读取图片
image = cv2.imread("P0170.png")
GrayImage=cv2.cvtColor(image ,cv2.COLOR_BGR2GRAY)

# 对GrayImage进行处理的程序

cv2.imwrite("vertical_flip.jpg", GrayImage)#将处理过的图片保存到当前文件夹
# 
cv2.namedWindow("draw_0",2) # 2的意思是可以调整显示框的大小,1不能调整,不需要调整框的大小可以不用这句话
cv2.imshow("draw_0", GrayImage)#显示图片
cv2.waitKey(0)
cv2.destroyWindow("draw_0")

2.2 绘制矩形框

就是利用cv2.rectangle函数

draw_1=cv2.rectangle(image, (x,y), (x1,y1), (0,255,0), 2)
# image表示处理的图片
# (x,y)和(x1,y1)分别表示矩形框的左上和右下两个点
# (0,255,0)表示框的颜色
# 2表示框的粗细

3 python读取文件,opencv在图片上画矩形框

# -*- coding: utf-8 -*-
"""
Created on Sun Apr 26 12:16:24 2020

@author: cxz_w
"""
import cv2
image = cv2.imread("P0170.png")
GrayImage=cv2.cvtColor(image ,cv2.COLOR_BGR2GRAY)

with open('plane.txt', 'r') as f:
    lines = f.readlines()
    splitlines = [x.strip().split(' ')  for x in lines]
    for splitline in splitlines:
        if(float(splitline[1]) >= 0.5):
            print(splitline)
            splitline = splitline[2:]
            print(splitline)
            
            x, y, x1, y1 = splitline
            x, y, x1, y1 = float(x), float(y), float(x1), float(y1)
            #print(x, y, x1, y2)
            draw_1=cv2.rectangle(image, (int(x),int(y)), (int(x1),int(y1)), (0,255,0), 2)
cv2.imwrite("vertical_flip.jpg", draw_1)
cv2.namedWindow("draw_0",2) 
cv2.imshow("draw_0", draw_1) #显示画过矩形框的图片
cv2.waitKey(0)
cv2.destroyWindow("draw_0")

P0170.png
在这里插入图片描述
plane.txt

在这里插入图片描述
vertical_flip.jpg在这里插入图片描述
至此,问题解决。

参考博客

https://blog.csdn.net/weixin_38145317/article/details/89497616

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值