基于python+pyqt的opencv汽车分割系统

这篇具有很好参考价值的文章主要介绍了基于python+pyqt的opencv汽车分割系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、实现和完整UI视频效果展示

主界面:

识别结果界面:

查看分割处理过程图片界面:

二、原理介绍:

加权灰度化

​编辑

二值化

滤波降噪处理

锐化处理

 边缘特征提取

图像分割

完整演示视频:

完整代码链接


一、实现和完整UI视频效果展示

主界面:

基于python+pyqt的opencv汽车分割系统,计算机视觉,图像处理,人工智能

识别结果界面:

基于python+pyqt的opencv汽车分割系统,计算机视觉,图像处理,人工智能

查看分割处理过程图片界面:

基于python+pyqt的opencv汽车分割系统,计算机视觉,图像处理,人工智能

历史记录

基于python+pyqt的opencv汽车分割系统,计算机视觉,图像处理,人工智能

 

二、原理介绍:

加权灰度化

图像灰度化的目的是为了简化矩阵,提高运算速度。彩色图片的信息含量过大,而进行图片识别时,其实只需要使用灰度图像里的信息就足够了,所以图像灰度化的目的就是为了提高运算速度

        # 创建一个与图像大小相同的灰度图像数组
        weight_gray = np.zeros(image.shape[0:2], dtype='uint8')

        # 使用加权平均法将彩色图像转换为灰度图像
        for ii in range(image.shape[0]):
            for jj in range(image.shape[1]):
                r, g, b = image[ii, jj, :]
                weight_gray[ii, jj] = 0.3 * r + 0.59 * g + 0.11 * b

基于python+pyqt的opencv汽车分割系统,计算机视觉,图像处理,人工智能

二值化

将图像的像素点和灰度值设置为0或255,将图像呈现出黑白的效果,图像二值化可以使图像中的数据量大大减少,从而凸显出目标的轮廓,也同时方便提取图像中的信息,增加识别的效率

# 对灰度图像进行二值化处理
T = 30
for y in range(image.shape[1]):
    for x in range(image.shape[0]):
        if weight_gray[x][y] < T:
            weight_gray[x][y] = 0
        else:
            weight_gray[x][y] = 255

 基于python+pyqt的opencv汽车分割系统,计算机视觉,图像处理,人工智能

滤波降噪处理

图像滤波的目的有两个:一是抽出对象的特征作为图像识别的特征模式;另一个是为适应图像处理的要求,消除图像数字化时所混入的噪声。调高提高图像的信噪比,使图像的应用特征突出。采用最小值滤波对图像进行降噪处理

# 对二值化图像进行滤波降噪
n = 3
salt_weight_gray = util.random_noise(weight_gray, mode='salt', rng=None, clip=True)
min_weight_gray = ndimage.minimum_filter(salt_weight_gray, (n, n))

基于python+pyqt的opencv汽车分割系统,计算机视觉,图像处理,人工智能

锐化处理

锐化处理的目的是增强图像中目标的细节、边缘、轮廓和其他灰度突变,削弱了灰度变化缓慢的区域。对图像使用拉普拉斯算子进行空间滤波得到拉普拉斯图像,将拉普拉斯图像以一定比例叠加到原始图像,可对原始图像进行拉普拉斯锐化增强,更加突出图像的纹理结构

# 对灰度图像进行锐化处理
img_laplace = filters.laplace(weight_gray, ksize=3, mask=None)
img_enhance = weight_gray + img_laplace

 基于python+pyqt的opencv汽车分割系统,计算机视觉,图像处理,人工智能

 边缘特征提取

采用LoG边缘检测算子:首先利用二维高斯函数对图像进行低通滤波(先平滑掉噪声),再用Laplace算子进行二阶导数运算进行边缘检测。目的就是找到图像中亮度变化剧烈的像素点构成的集合,表现出来往往是轮廓

# 对灰度图像进行高斯平滑和LoG边缘检测
gaussian_weight_gray = gaussian(weight_gray)
edge_LoG = laplace(gaussian_weight_gray)

基于python+pyqt的opencv汽车分割系统,计算机视觉,图像处理,人工智能基于python+pyqt的opencv汽车分割系统,计算机视觉,图像处理,人工智能

图像分割

  对灰度车辆图像进行了闻值处理,得到二值化车辆图像。然后对二值化车辆图像进行了标记,获取到车辆的连通区域,并计算了它们的面积。在所有连通区域中选取面积最大的,创建一个与二值化车辆图像相同大小的遮罩数组,将面积等于largest area 的连通区域像素置为 1,其余部分为0,最后复制原始图

# 分割汽车图像
threshold = filters.threshold_otsu(gaussian_weight_gray)
car_binary = gaussian_weight_gray > threshold
car_labels = measure.label(car_binary)
properties = measure.regionprops(car_labels)
areas = [prop.area for prop in properties]

基于python+pyqt的opencv汽车分割系统,计算机视觉,图像处理,人工智能

基于python+pyqt的opencv汽车分割系统,计算机视觉,图像处理,人工智能

完整演示视频:

无法粘贴视频........

完整代码链接

视频和代码都已上传百度网盘,放在主页置顶文章文章来源地址https://www.toymoban.com/news/detail-682931.html

到了这里,关于基于python+pyqt的opencv汽车分割系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包