图像保存与获取中的改进功能应用
pypylon-opencv-viewer的Python项目详细描述
basler pypypylon opencv viewer for jupyter笔记本
易于使用的Jupyter笔记本浏览器连接Basler Pylon图像采集和Opencv图像处理。 允许指定交互式jupyter小部件来操作basler相机功能值、抓取相机图像和 一旦获得显示原始相机输出的opencv窗口,或者您可以指定图像处理功能, 它接受输入的原始相机输出图像并显示您自己的输出。
安装
pip install pypylon-opencv-viewer
用法
要开始工作,请启动Jupyter笔记本并连接到Basler摄像头。下面是一个如何做到的示例:
frompypylonimportpylon# Pypylon get camera by serial numberserial_number='22716154'info=Noneforiinpylon.TlFactory.GetInstance().EnumerateDevices():ifi.GetSerialNumber()==serial_number:info=ibreakelse:print('Camera with {} serial number not found'.format(serial_number))# VERY IMPORTANT STEP! To use Basler PyPylon OpenCV viewer you have to call .Open() method on you cameraifinfoisnotNone:camera=pylon.InstantCamera(pylon.TlFactory.GetInstance().CreateDevice(info))camera.Open()
现在我们可以开始使用我们的查看器了。基本上我们需要三件事:连接摄像头,我们想使用的功能 (您可以在official Basler documentation中找到它们,用于 现在这个库只支持布尔和数字特征)以及我们想要应用于抓取的图像处理函数 图像。图像处理功能不是必需的,您不必指定,在这种情况下,您将得到原始的 摄像机输出。
功能列表
功能-听写列表。
dict结构:
name
-相机挂架功能名称,例如:“gainraw”(必需)type
-小部件输入类型,允许值int
,float
,bool
,int_text
,float_text
(可选,默认值:“int”)value
-小部件输入值(可选,默认值:当前相机功能值)min
-最小窗口小部件输入值,仅数值窗口小部件类型(可选,默认:相机功能最小值)
配置示例如下:
# List of features to create wigetsfeatures=[{"name":"GainRaw","type":"int"},{"name":"Height","type":"int_text","max":1000,"min":100,"step":"5"},{"name":"Width","type":"int_text","max":1000,"min":100,"step":"5"},{"name":"AcquisitionFrameRateEnable","type":"bool"},{"name":"AcquisitionFrameRateAbs","type":"int","max":60,"min":10}]
示例图像处理功能
例如图像处理功能,它可以使图像负片。图像必须是其中唯一的参数。 如果你想显示一些图像,你必须在函数中自己完成。不要破坏 所有opencv窗口或等待按键。
importnumpyasnpimportcv2defimpro(img):cv2.namedWindow('1',cv2.WINDOW_NORMAL|cv2.WINDOW_GUI_NORMAL)cv2.resizeWindow('1',1080,720)cv2.imshow("1",np.hstack([img,(255-img)]))
查看器
我们已经准备好了所有需要的零件。现在我们只需将它们设置为查看器对象并启动图像捕获:
run_interaction_continuous_shot
表示连续,或run_interaction_single_shot
表示单发。
也可以按“s”按钮将原始相机图像或impro函数返回值保存到image_folder
。
frompypylon_opencv_viewerimportBaslerOpenCVViewerviewer=BaslerOpenCVViewer(camera)viewer.set_features(features)viewer.set_impro_function(impro)viewer.run_interaction_continuous_shot(image_folder='~/Documents/images')
现在我们看到一些类似的图像,我们可以设置相机特征值。按Run interaction
让它消失。
要关闭opencv窗口,只需按键盘上的“q”。你不必再启动这个手机
处理图像,只需更改所需的值并按下按钮。就这样!
保存或从相机获取图像
在前面的步骤中,我们使用小部件设置相机功能参数。现在我们可以将摄像机图像保存在光盘上,或者 原始opencv图像(如果指定了impro函数返回值)。
# Save imageviewer.save_image('~/Documents/images/grabbed.png')# Get grabbed imageimg=viewer.get_image()