当前位置: 首页 > news >正文

13.梯度scharr与lapkacia算子

拉普拉斯计算中间点和四周点的比较,不需要区分x轴或y轴

import cv2
from matplotlib import pyplot as plt#导入 Matplotlib 库中的 pyplot 模块,并命名为 plt。#Matplotlib 是一个强大的绘图库,常用于绘制图表和图像显示。#就是窗口# OpenCV	BGR(Blue, Green, Red)# Matplotlib	RGB(Red, Green, Blue)
import numpy as np  #导入 NumPy 库,并命名为 np。#NumPy 提供了多维数组对象及各种派生对象(如掩模数组),并且包含大量用于数组快速操作的函数。# 如果图像不在脚本所在目录,请提供完整路径
img1_t =  cv2.imread(r"D:/Professional software package(new)/VS Projects/OPenCv/Picture/IMG_20231230_171718.jpg")#使用 OpenCV 函数读取图像文件。
#img2_t= cv2.imread(r"D:/Professional software package(new)/VS Projects/OPenCv/Picture/IMG_20231230_145121.jpg")                                        #它返回的是一个 NumPy 数组,其中包含了图像的像素数据。如果没有找到图像或路径错误,img 将是 None。
img3_t= cv2.imread(r"D:/Professional software package(new)/VS Projects/OPenCv/Picture/maoci1.jpg")                                        #它返回的是一个 NumPy 数组,其中包含了图像的像素数据。如果没有找到图像或路径错误,img 将是 None。# 检查图片是否成功加载
if img1_t is None:print("Error: 图像1加载失败,请检查文件路径和文件权限。")
elif img3_t is None:        print("Error: 图像2加载失败,请检查文件路径和文件权限。")
else:# 将 BGR 图像转换为 RGB 图像以供 matplotlib 正确显示print(" 图像加载成功!")img1_rgb = cv2.cvtColor(img1_t, cv2.COLOR_BGR2RGB)#由于 OpenCV 默认使用 BGR 格式来存储图像数据,而大多数其他图像处理工具(包括 Matplotlib)使用 RGB 格式。                                    #因此,在用 Matplotlib 显示图像之前,我们需要将图像从 BGR 格式转换为 RGB 格式。img3_rgb = cv2.cvtColor(img3_t, cv2.COLOR_BGR2RGB)                                                 #RGB 和 BGR 只是颜色通道的不同排序#添加函数 图片展示函数
def CV_Show(name,img,time,percent): scale_percent = percent  # 百分比width = int(img.shape[1] * scale_percent / 100)height = int(img.shape[0] * scale_percent / 100)dim = (width, height)resized_img = cv2.resize(img, dim,interpolation=cv2.INTER_AREA)cv2.imshow(name, resized_img)cv2.waitKey(time*1000)#显示多少秒  cv2.destroyAllWindows()#腐蚀操作
kernal=np.ones((3,3),np.uint8)
erosion=cv2.erode(img3_t,kernal,iterations=5)#膨胀操作
kernal=np.ones((3,3),np.uint8)
dige_dilate=cv2.dilate(img3_t,kernal,iterations=5)#推荐使用#             #梯度处理
# dst=cv2.Sobel(img3_t,-1,1,0,ksize=3)#参数为 输入图,输出图像的深度(数据类型),dx,dy(选择一个方向),Sobel 核的大小(可选,默认为 3
# cv2.imshow("gradient",dst)
# cv2.waitKey(3000)
# cv2.destroyAllWindows()#Sobel  x轴梯度处理
# dst_x=cv2.Sobel(img3_t,cv2.CV_64F,1,0,ksize=3)#x,y的0,1表示取水平梯度,还是垂直梯度,但是从左到右,白到黑为正数,黑到白为负数。
# # cv2.CV_8U:8位无符号整型(常用作图像显示)
# # cv2.CV_16S:16位有符号整型(适合做边缘检测后取绝对值)
# # cv2.CV_32F:32位浮点型
# # cv2.CV_64F:64位浮点型(高精度)
# dst_x=cv2.convertScaleAbs(dst_x)#将负数值取绝对值
# cv2.imshow("dst_x",dst_x)
# cv2.waitKey(3000)
# cv2.destroyAllWindows()#           #Sobel  y轴梯度处理
# dst_y=cv2.Sobel(img3_t,cv2.CV_64F,0,1,ksize=3)#x,y的0,1表示取水平梯度,还是垂直梯度,但是从左到右,白到黑为正数,黑到白为负数。
# dst_y=cv2.convertScaleAbs(dst_y)#将负数值取绝对值
# cv2.imshow("dst_y",dst_y)
# cv2.waitKey(3000)
# cv2.destroyAllWindows()# #两者相结合
# dst_x_y=cv2.addWeighted(dst_x,0.5,dst_y,0.5,0)
# cv2.imshow("dst_x_y",dst_x_y)
# cv2.waitKey(3000)
# cv2.destroyAllWindows() # # #不建议直接相加
# # dst_y=cv2.Sobel(img3_t,cv2.CV_64F,1,1,ksize=3)#Scharr函数处理#更加敏感,处理更加细致,但会产生噪点
st_y=cv2.Scharr(img3_t,cv2.CV_64F,0,1)
dsst_y=cv2.convertScaleAbs(st_y)#将负数值取绝对值
cv2.imshow("st_y",dsst_y)
cv2.waitKey(3000)
cv2.destroyAllWindows()st_x=cv2.Scharr(img3_t,cv2.CV_64F,1,0)
st_x=cv2.convertScaleAbs(st_x)#将负数值取绝对值
cv2.imshow("st_x",st_x)
cv2.waitKey(3000)
cv2.destroyAllWindows()#拉普拉斯函数处理
Laplacian=cv2.Laplacian(img3_t,cv2.CV_64F)
dsst_y=cv2.convertScaleAbs(Laplacian)#将负数值取绝对值
cv2.imshow("dsst_y",dsst_y)
cv2.waitKey(3000)
cv2.destroyAllWindows()res=np.hstack(st_x,dsst_y)#展示两个图片
cv2.imshow("res",res)
cv2.waitKey(0)

http://www.dtcms.com/a/279173.html

相关文章:

  • 成都,工业设备边缘计算如何落地?——“边缘智能”新解法!
  • Linux入门:从文件存储到常用命令详解
  • 从数据库到播放器:Java视频续播功能完整实现解析
  • simscape中坐标系和坐标变换Frames and Transforms
  • MySQL数据实时同步到Elasticsearch的高效解决方案
  • 小波变换 | 连续小波变换
  • Effective Modern C++ 条款10:优先考虑限域enum而非未限域enum
  • 安全架构中身份与访问管理体系设计
  • 基于Yolov8车辆检测及图像处理系统【有代码】
  • python多版本管理--pyenv
  • pyspark中map算子和flatmap算子
  • RAG优化
  • Mysql数据库学习--约束
  • 聚宽sql数据库传递
  • 非阻塞写入核心:asyncio.StreamWriter 的流量控制与数据推送之道
  • python+requests 接口自动化测试实战
  • 支付宝小程序代运营:专业助力提升运营效能
  • AI Agent和Agentic AI
  • 驱动开发系列60- Vulkan 驱动实现-SPIRV到HW指令的实现过程(1)
  • 【Bluedroid】蓝牙协议栈enable流程深度解析
  • Redis ①⑥-缓存
  • org.casic.javafx.control.PaginationPicker用法
  • 【Docker基础】Dockerfile指令速览:健康检查与启动指令详解
  • Apache部署
  • ThinkPHP 8 在 Apache 下启用伪静态
  • 深入解析Hadoop YARN架构设计:从原理到实践
  • 音视频:语音转换文字功能实现
  • 阿尔卡特ACT 250 ATP 150 AND ATP 400 分子泵控制器TURBOMOLECULAR PUMP CONTROLLER ALCATEL
  • 微型导轨在3D打印设备中如何稳定运行?
  • Java:继承和多态(必会知识点整理)