zoukankan      html  css  js  c++  java
  • 机器视觉作业

    边缘检测算子

    一、题目描述

    将图像进行反色显示

    进行Sobel算子滤波再将其反色显示

    进行Roberts算子滤波再将其反色显示

    二、实现过程

    代码:

    import cv2
    
    import numpy as np
    
    from matplotlib import pyplot as plt
    
    from PIL import Image, ImageDraw, ImageFont
    
    plt.rcParams['font.family'] = ['sans-serif']
    
    plt.rcParams['font.sans-serif'] = ['SimHei']
    
    # 读取图像
    
    src_s = cv2.imread("C:/Users/dell/Desktop/dip.bmp")
    
    #反色
    
    ret,src = cv2.threshold(src_s,80,255,cv2.THRESH_BINARY)
    
    src = cv2.bitwise_not(src_s)
    
    cv2.imshow('src',src)
    
    #Sobel算子滤波
    
    x=cv2.Sobel(src,cv2.CV_16S,0,1)#对x求一阶导
    
    y=cv2.Sobel(src,cv2.CV_16S,0,1)#对y求一阶导
    
    absx=cv2.convertScaleAbs(x)#计算绝对值,并将图像转换为8位图进行显示
    
    absy=cv2.convertScaleAbs(y)
    
    sobel=cv2.addWeighted(absx,0.5,absy,0.5,0)#将图像进行线性混合
    
    #反色
    
    ret,sobel2 = cv2.threshold(sobel,80,255,cv2.THRESH_BINARY)
    
    sobel2 = cv2.bitwise_not(sobel)
    
    cv2.imshow('sobel2',sobel2)
    
    cv2.waitKey(0)
    
    #robert算子滤波
    
    lenna_img = cv2.cvtColor(src,cv2.COLOR_BGR2RGB)
    
    #灰度化处理图像
    
    grayImage = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
    
    #Roberts算子
    
    kernelx = np.array([[-1,0],[0,1]], dtype=int)
    
    kernely = np.array([[0,-1],[1,0]], dtype=int)
    
    x = cv2.filter2D(grayImage, cv2.CV_16S, kernelx)#filter2D实现边缘提取
    
    y = cv2.filter2D(grayImage, cv2.CV_16S, kernely)
    
    #转uint8
    
    absX = cv2.convertScaleAbs(x)     
    
    absY = cv2.convertScaleAbs(y)   
    
    robert = cv2.addWeighted(absX,0.5,absY,0.5,0)
    
    ret,robert2= cv2.threshold(robert,80,255,cv2.THRESH_BINARY)
    
    robert2 = cv2.bitwise_not(robert)
    
    cv2.imshow('robert2',robert2) 
    
    cv2.waitKey(0)

    三、运行结果

    截图

     

      

    四、问题及解决方法

    error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

    在读取桌面文件的时候一直报错:(unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated UXXXXXXXX escape

    路径错误,找到图片打开属性复制路径,后还是不对,后把“”换为”/”即可运行

    五、实验总结

    本次实验不难,学到了Sobel,Roberts,明白了遇到问题需要思考到底是那个地方错误,在网上寻找之后筛选有用的解答就可以解决问题。

  • 相关阅读:
    Power BI for Office 365(八)共享查询
    Power BI for Office 365(七) Power BI站点
    Power BI for Office 365(六)Power Map简介
    Power BI for Office 365(五)Power View第二部分
    Power BI for Office 365(四)Power View第一部分
    Power BI for Office 365(三)Power Pivot
    Power BI for Office 365(二)Power Query
    java 继承、重载、重写与多态
    Android 热修复方案Tinker(一) Application改造
    阿里最新热修复Sophix与QQ超级补丁和Tinker的实现与总结
  • 原文地址:https://www.cnblogs.com/sndd/p/12467823.html
Copyright © 2011-2022 走看看