使用Python |
您所在的位置:网站首页 › 函数尺子怎么用视频 › 使用Python |
目录
前言一、开发前准备二、需要的库三、程序主体3.0 mian()3.1设置被调用的摄像头类型3.2调用相机3.3图像处理(轮廓端点查找)3.4边框绘制(数据计算)3.5比率计算3.6参照物选取(拍照)3.7实时测量
四、成果展示
前言
注意:不讲实现原理,也没有做UI,精度就玩玩的级别,记得打(尽量柔和的)光。 博主是一名机械设计制造及其自动化专业的学生,以前在车间上课时总需要挑选特定尺寸的毛坯作为被加工工件,奈何本人较懒,所以就有了码这么一个py文件出来助我偷懒的想法。 完整的文件(某U加速“学术资源”可以访问): https://github.com/Yjie0929/object-size-measurement-based-on-OpenCV.git 一、开发前准备喜欢用Pycharm还是Anaconda或其它都可以,没有关系。 因为摄像头使用的只是普通的家用摄像头(某夕夕个位数包邮),所以在码程序之前需要准备一个尺寸精度较高(尽量高)的参照物来获取欧氏距离和真实长度的比率。 穷得只能3D打印的屑博主:10mm³,20mm³,30mm³ 这段函数是为了方便程序能够在内置相机或外置相机之间来回切换工作。如果确定仅使用外置相机的情况下可以忽略这一步。 def set_camera_type(): while True: try: set_type = int(input('摄像头调用(输入数字代号:0.内置,1.外置):')) except ValueError: delay('输入参数类型错误') continue else: if (set_type 1): delay('输出参数不在范围内') continue elif set_type == 0: print('选择:内置摄像头') else: print('选择:外置摄像头') break return set_type 3.2调用相机如确认仅使用外置相机时将camera_type设置为‘1’,cv2.CAP_DSHOW为可选参数,在相机调用过程中出现不知名报错时试着加入。关于第二个if,是防止遇到窗口关闭了但又没有完全关闭的情况而导致的堵塞。 def call_camera(): camera = cv2.VideoCapture(camera_type, cv2.CAP_DSHOW) if camera.isOpened() is False: print('摄像头调用失败') raise AssertionError else: while True: frame = camera.read()[1] # 返回捕获到的RGB image = cv2.flip(frame, 1, dst=None) cv2.imshow('Camera', image) if (cv2.waitKey(1) > -1) or (cv2.getWindowProperty('Camera', cv2.WND_PROP_VISIBLE) 1: selected_points.clear() # 清空内容,为下一次存储数据用 filter_area += 1 else: break reference_area_point = draw_frame(image, selected_points, 0) while True: cv2.imshow('reference', image) if (cv2.waitKey(1) > -1) or (cv2.getWindowProperty('reference', cv2.WND_PROP_VISIBLE) filter_area] # 筛选后的端点 draw_frame(image, selected_points, 1) # 绘制边框 cv2.imshow('Camera', image) if (cv2.waitKey(1) > -1) or (cv2.getWindowProperty('Camera', cv2.WND_PROP_VISIBLE) |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |