图像边缘识别检测

博主用的是python3,不过在结尾也有c++方法的地址,供大家参考学习,图像边缘识别需要安装opencv。网上也有一部分人用的是PIL,我在查找了一些资料,并看了一些人的评论后决定用opencv,也推荐各位用。

我简单的理解了一下图像边缘识别的方法,总结为以下几点:

1、了解电脑中图片的存储方式

2、什么是算子

3、获取图片像素——行数,列数,图片的通道数(这是彩色图片,灰度图像没有通道数)

4、进行图片边缘识别检测

首先应该了解什么是图片,图片有很多种,我并不完全懂,这里我说一下256色图片,256也就是2的8次方,在存储的方式上使用一个字节,也就是8位0和1的二进制表示的,从0开始到255结束,所以说他是16色图片数据量的两倍。

详见:https://baike.baidu.com/item/%E7%AE%97%E5%AD%90/970194?fr=aladdin

然后是算子,简单来说就是一种映射,和我们中学学的函数并无区别。但是在图像边缘识别的方法中有两个算子,根据我的理解,是分别计算得到纵向和横向的灰度图。

详见:https://baike.baidu.com/item/%E7%AE%97%E5%AD%90/970194?fr=aladdin

首先我贴出我查看别人博客认为图片边缘识别最好的一版的代码:

 1 import cv2;
 2 import numpy as np
 3 
 4 img = cv2.imread(r'图片地址')

首先导入图片数据。

 1 x = cv2.Sobel(img, cv2.CV_16S, 1, 0, ksize=-1)
 2 y = cv2.Sobel(img, cv2.CV_16S, 0, 1, ksize=-1)
 3 # ksize=-1 Scharr算子
 4 # cv2.convertScaleAbs(src[, dst[, alpha[, beta]]])
 5 # 可选参数alpha是伸缩系数,beta是加到结果上的一个值,结果返回uint类型的图像
 6 Scharr_absX = cv2.convertScaleAbs(x)  # convert 转换  scale 缩放
 7 Scharr_absY = cv2.convertScaleAbs(y)
 8 result = cv2.addWeighted(Scharr_absX, 0.5, Scharr_absY, 0.5, 0)
 9 blur = cv2.GaussianBlur(img, (3, 3), 0)  # 用高斯滤波处理原图像降噪
10 canny = cv2.Canny(blur, 50, 150)  # 50是最小阈值,150是最大阈值
11 cv2.imshow('canny', canny)
12 cv2.waitKey(0)
13 cv2.destroyAllWindows()

效果非常给力,大家可以去尝试,不要忘记import cv2,想更多了解的朋友推荐大家看一下我推荐的最后一个博客,非常多的方法都可以去尝试。

代码转载自:https://blog.csdn.net/sunny2038/article/details/9202641

相关资料可查阅:

c++版本图像边缘检测:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/imgtrans/canny_detector/canny_detector.html(c++的,代码流程可以用作参考)

python图片像素的获取:https://blog.csdn.net/mao_hui_fei/article/details/78217049

图像边缘识别: https://blog.csdn.net/qq_40962368/article/details/81416954(这个里面的canny算子我没有调试出来,不过别的方法也非常给力,大家可以看一下)

 

转载于:https://www.cnblogs.com/CHAHA123/p/10658622.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值