python学习应用的一些记录

一、opencv

1,相关语法python

1.1 图片上添加文字:cv2.putText()

cv2.putText(img, str(i), (123,456), font, 2, (0,255,0), 3)
各参数依次是:图片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细
参考:https://blog.csdn.net/weixin_42039090/article/details/80679935

1.2 cv2.waitKey(0) & 0xFF

cv2.waitkey(delay)函数
1.若参数delay≤0:表示一直等待按键;
2.若delay取正整数:表示等待按键的时间,比如cv2.waitKey(30),就是等待30(milliseconds);(视频中一帧数据显示(停留)的时间)
cv2.waitKey(delay)返回值:
1、等待期间有按键:返回按键的ASCII码(比如:Esc的ASCII码为27,即0001 1011);
2、等待期间没有按键:返回 -1
参考:https://blog.csdn.net/hao5119266/article/details/104173400
eg:

if cv2.waitKey(1) & 0xFF == ord('q'):
	break

1.3 cv2.selectROI与cv2.selectROIs函数

selectROI(windowName, img, showCrosshair=None, fromCenter=None):
. 参数windowName:选择的区域被显示在的窗口的名字
. 参数img:要在什么图片上选择ROI
. 参数showCrosshair:是否在矩形框里画十字线.
. 参数fromCenter:是否是从矩形框的中心开始画
返回一个元组[min_x,min_y,w,h]
eg:

import cv2
import numpy as np

img = cv2.imread("shapes.png")

r = cv2.selectROI('input', img, True,False)  # 返回 (x_min, y_min, w, h)

# roi区域
roi = img[int(r[1]):int(r[1]+r[3]), int(r[0]):int(r[0]+r[2])]

cv2.imshow('roi', roi)
cv2.waitKey(0)

选择多个目标:cv2.selectROIs函数
(框选方法:当你使用鼠标框选一个一个目标后,点击space或enter键后才能框选下一个目标。框选所有的目标后,esc键退出)
eg:

import cv2
import numpy as np

img = cv2.imread("shapes.png")

ROIs = cv2.selectROIs('input', img, True,False)  # 返回 (x_min, y_min, w, h)

if len(ROIs) >0:
    for ROI in ROIs:
        x,y,w,h=ROI
        roi = img[int(y):int(y + h), int(x):int(x + w)]
        cv2.imshow('roi', roi)
        cv2.waitKey(0)
        cv2.destroyAllWindows()

参考:https://blog.csdn.net/weixin_43810267/article/details/106741785

1.4 map(tuple, initBB)

map(function, iterable, …)

参数function传的是一个函数名,可以是python内置的,也可以是自定义的。 参数iterable传的是一个可以迭代的对象,例如列表,元组,字符串这样的。
返回结果是一个列表。

这个函数的意思就是将function应用于iterable的每一个元素,结果以列表的形式返回。iterable后面还有省略号,意思可以传很多个iterable,如果有额外的iterable参数,并行的从这些参数中取元素,并调用function。
eg:

a=list(map(str,'python'))
print(a)

输出:
[‘p’, ‘y’, ‘t’, ‘h’, ‘o’, ‘n’]

参考:https://www.cnblogs.com/ConnorShip/p/10004008.html

1.5 cv2.VideoCapture()

在读取相机RTSP流,发现OpenCV不如使用imutils包读取的快,使用imutils包的VideoStream读取视频流,丢帧率达20%
eg:

if not args.get("video", False):
    print("[INFO] starting video stream...")
    vs = VideoStream(src=0).start()
    time.sleep(1.0)
else:
    vs = cv2.VideoCapture(args["video"])

参考:https://blog.csdn.net/ze1336365763/article/details/107339359

1.6 cv2.namedWindow()

cv2.namedWindow(‘窗口标题’,默认参数)
cv2.imshow(‘窗口标题’,image),如果前面没有cv2.namedWindow,就自动先执行一个cv2.namedWindow()
窗口大小可以改变:

cv2.namedWindow("image",cv2.WINDOW_NORMAL)
或者cv2.namedWindow('image',cv2.WINDOW_GUI_NORMAL)

参考:https://www.cnblogs.com/enumx/p/12343963.html

1.7 使用滑动条 cv2.createTrackbar,cv2.getTrackbarPos(), cv2.setTrackbarPos

1、绑定滑动条和窗口,定义滚动条的数值:
cv2.createTrackbar(“scale”, “display”, 0, 100, self.opencv_calibration_node.on_scale)

参数
第一个参数是滑动条的名字,
第二个参数是滑动条被放置的窗口的名字,
第三个参数是滑动条默认值,
第四个参数是滑动条的最大值,
第五个参数是回调函数,每次滑动都会调用回调函数。
2、得到滑动条的数值:
cv2.getTrackbarPos()

参数
第一个参数是滑动条名字,
第二个参数是所在窗口,
返回值是滑动条的数值。
3、设置滑动条的默认值:cv2.setTrackbarPos(‘Alpha’, ‘image’, 100)

参数
第一个参数是滑动条名字,
第二个参数是所在窗口,
第三个参数是滑动条默认值,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值