《K230 从熟悉到...》边缘检测
- Candy
- 简单的阈值高通滤波算法
- 拉普拉斯核
Canny和阈值高通滤波用的同一个API,只在参数中做区别。
Candy
img.find_edges(image.EDGE_CANNY, threshold=(50, 80))
简单的阈值高通滤波算法
img.find_edges(image.EDGE_SIMPLE, threshold=(50, 80))
拉普拉斯核
src_img.laplacian(2,mul=0.2) # 拉普拉斯边缘检测
操作 | 函数 | 适用格式 | 参数说明 |
---|---|---|---|
Canny边缘检测算法 | image.find_edges(image.EDGE_CANNY, threshold) | 仅支持灰度图像 | threshold:包含低阈值和高阈值的二元元组 |
简单的阈值高通滤波算法 | image.find_edges(image.EDGE_SIMPLE, threshold) | 仅支持灰度图像 | threshold:包含低阈值和高阈值的二元元组 |
拉普拉斯核 | image.laplacian | 不支持压缩图像和 Bayer 图像 | size:内核大小;sharpen:是否锐化;mul:卷积结果相乘数字;add:相加数值等 |
python">import time, os, sysfrom media.sensor import *
from media.display import *
from media.media import *sensor = None
fps = time.clock()
try:sensor = Sensor()sensor.reset()sensor.set_framesize(width = 800, height = 480)sensor.set_pixformat(Sensor.YUV420SP)bind_info = sensor.bind_info()Display.bind_layer(**bind_info, layer = Display.LAYER_VIDEO1)# 通道2 320*240sensor.set_framesize(Sensor.QVGA, chn = CAM_CHN_ID_2)sensor.set_pixformat(Sensor.GRAYSCALE, chn = CAM_CHN_ID_2)Display.init(Display.ST7701)MediaManager.init()sensor.run()fps = time.clock()# 注意他们2个显示都不在一个层上面!!!while True:fps.tick()os.exitpoint()img = sensor.snapshot(chn = CAM_CHN_ID_2)#img.find_edges(image.EDGE_CANNY, threshold=(50, 80)) # canny#img.find_edges(image.EDGE_SIMPLE, threshold=(50, 80)) #阈值高通滤波算法img.laplacian(2,mul=0.2) # 拉普拉斯边缘检测Display.show_image(img, x = 800-320, layer = Display.LAYER_OSD1)print(fps.fps())except KeyboardInterrupt as e:print("user stop: ", e)
except BaseException as e:print(f"Exception {e}")
finally:# sensor stop runif isinstance(sensor, Sensor):sensor.stop()# deinit displayDisplay.deinit()os.exitpoint(os.EXITPOINT_ENABLE_SLEEP)time.sleep_ms(100)# release media bufferMediaManager.deinit()