python opencv 邊緣檢測(sobel、沙爾算子、拉普拉斯算子、Canny)

python opencv 邊緣檢測(sobel、沙爾算子、拉普拉斯算子、Canny)

這次實驗,我們分別使用opencv 的 sobel算子、沙爾算子、拉普拉斯算子三種算子取進行邊緣檢測,然后后面又使用了Canny算法進行邊緣檢測。
直接看代碼,代碼比較簡單,不是很復雜:
注:cv2.convertScaleAbs進行了一個絕對值操作,因為可能計算出來梯度為負值。

from ctypes.wintypes import SIZE
from multiprocessing.pool import IMapUnorderedIterator
import cv2
import copy
import math
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import ospath=r'ls.jpg'img=cv2.imread(path,1)
img_gray=cv2.imread(path,0)def cv_show(name,img):cv2.imshow(name,img)#cv2.waitKey(0),接收0,表示窗口暫停cv2.waitKey(0)#銷毀所有窗口cv2.destroyAllWindows()#cv_show('img_gray',img_gray)#Sobel算子img_sobel_x=cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)#1,0 表示選擇水平還是豎直放心計算梯度img_sobel_y=cv2.Sobel(img,cv2.CV_64F,0,1,ksize=3)#1,0 表示選擇水平還是豎直放心計算梯度sobel_img_x_abs=cv2.convertScaleAbs(img_sobel_x)
img_sobel_y_abs=cv2.convertScaleAbs(img_sobel_y)img_sobel_xy_abs=cv2.addWeighted(sobel_img_x_abs,0.5,img_sobel_y_abs,0.5,0)
plt.subplot(231)
#img_gray=BGR_TO_RGB(img_gray,'gray')
plt.imshow(img_sobel_x[:,:,::-1])
plt.title('img_sobel_x')plt.subplot(232)
plt.imshow(sobel_img_x_abs[:,:,::-1])
plt.title('sobel_img_x_abs')
plt.subplot(233)#result=BGR_TO_RGB(result)
plt.imshow( img[:,:,::-1])
plt.title('img')plt.subplot(234)#result=BGR_TO_RGB(result)
plt.imshow( img_sobel_y[:,:,::-1])
plt.title('img_sobel_y')plt.subplot(235)#result=BGR_TO_RGB(result)
plt.imshow( img_sobel_y_abs[:,:,::-1])
plt.title('img_sobel_y_abs')plt.subplot(236)#result=BGR_TO_RGB(result)
plt.imshow( img_sobel_xy_abs[:,:,::-1])
plt.title('img_sobel_xy_abs')
plt.show()#沙爾算子scharrx=cv2.Scharr(img,cv2.CV_64F,dx=1,dy=0)scharry=cv2.Scharr(img,cv2.CV_64F,dx=0,dy=1)scharry_img_x_abs=cv2.convertScaleAbs(scharrx)scharry_img_y_abs=cv2.convertScaleAbs(scharry)img_scharry_xy_abs=cv2.addWeighted(scharry_img_x_abs,0.5,scharry_img_y_abs,0.5,0)
#拉普拉斯算子
lap_img=cv2.Laplacian(img,cv2.CV_64F)
lap_img_abs=cv2.convertScaleAbs(lap_img)
plt.subplot(121)
#img_gray=BGR_TO_RGB(img_gray,'gray')
plt.imshow(scharry_img_y_abs[:,:,::-1])
plt.title('scharry_img_y_abs')plt.subplot(122)
plt.imshow(lap_img_abs[:,:,::-1])
plt.title('lap_img_abs')
plt.show()#result=BGR_TO_RGB(rpath=r'D:\learn\photo\cv\lena.jpg'img=cv2.imread(path,0)
img_canny1=cv2.Canny(img,80,150)
img_canny2=cv2.Canny(img,50,150)
plt.subplot(131)
#img_gray=BGR_TO_RGB(img_gray,'gray')
plt.imshow(img,'gray')
plt.title('img')
plt.subplot(132)
#img_gray=BGR_TO_RGB(img_gray,'gray')
plt.imshow(img_canny1,'gray')
plt.title('img_canny1')plt.subplot(133)
plt.imshow(img_canny2,'gray')
plt.title('img_canny2')
plt.show()os.system("pause")

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/167424.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/167424.shtml
英文地址,請注明出處:http://en.pswp.cn/news/167424.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

論文導讀 | 10月專題內容精選:人的預測

編者按 本次論文導讀,編者選擇了10月份OR和MS上與"人的預測"有關的三篇文章,分別涉及群體智慧的提取,個體序列預測的評估,以及決策者對風險的扭曲感知在分布式魯棒優化中的應用。其中,從基于"生成式可能…

Django框架之csrf跨站請求

目錄 一、csrf跨站請求偽造詳解 二、csrf跨域請求偽造 【1】正常服務端 【2】釣魚服務端 三、csrf校驗 【介紹】 form表單中進行csrf校驗: 【1】form表單如何校驗 【2】ajax如何校驗 四、csrf相關裝飾器 【1】csrf_protect裝飾器: 【…

使用VUE3實現簡單顏色盤,吸管組件,useEyeDropper和<input type=“color“ />的使用

1.使用vueuse中的useEyeDropper來實現滴管的功能和使用input中的type"color"屬性來實現顏色盤 效果&#xff1a; 圖標觸發吸管 input觸發顏色盤 組件代碼部分 &#xff1a;<dropper> ---- vueuse使用 <template><div class"sRGBHexWrap fbc…

【Python百寶箱】第三維度的魔法:探索Python游戲世界

Python在游戲開發中的魔力 前言 游戲開發一直是計算機科學中最引人入勝和具有挑戰性的領域之一。隨著技術的不斷進步&#xff0c;開發者們尋找著更快、更靈活的工具來實現他們的創意。在這個探索的過程中&#xff0c;Python以其簡潔、易學和強大的特性成為了游戲開發的熱門選…

C#每天復習一個重要小知識day4:枚舉的概念/申明/使用

目錄 1.枚舉的概念&#xff1a; 2.申明枚舉和申明枚舉變量&#xff1a; 申明枚舉語法&#xff1a; 申明枚舉變量語法&#xff1a; 1.枚舉的概念&#xff1a; 枚舉是什么&#xff1f;枚舉是一個比較特別的存在&#xff0c;它是一個命名的整形常量的集合&#xff0c;一般用它…

Flume采集Kafka并把數據sink到OSS

安裝環境 Java環境, 略 (Flume依賴Java)Flume下載, 略Scala環境, 略 (Kafka依賴Scala)Kafak下載, 略Hadoop下載, 略 (不需要啟動, 寫OSS依賴) 配置Hadoop 下載JindoSDK(連接OSS依賴), 下載地址Github 解壓后配置環境變量 export JINDOSDK_HOME/usr/lib/jindosdk-x.x.x expo…

AWS CLI和EKSCTL的客戶端設置

文章目錄 小結過程安裝AWS CLI安裝EKSCTL在兩個Kubernetes Cluster之間切換 參考 小結 在Linux環境中對AWS CLI和EKSCTL的客戶端進行了設置。 過程 安裝AWS CLI 使用以下指令安裝&#xff1a; curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip"…

Qt實現繪制自定義形狀

先創建一個繼承自QWidget的控件&#xff1a; class MyPainterWidget:public QWidget 重寫各種鼠標方法&#xff1a; protected:void paintEvent(QPaintEvent *) override;void mousePressEvent(QMouseEvent *e) override; //按下void mouseMoveEvent(QMouseEvent *e) …

Xposed hook失敗的原因

最近對Xposed的比較感興趣&#xff0c;于是照著網上的給的例子做了一個Xposed模塊&#xff0c;但是在安卓模擬器上死活不生效&#xff0c;最后研究發現了兩個問題導致&#xff1a; 1、XposedBridgeAPI-89.jar 需要放到項目的lib目錄下&#xff0c;而不是libs目錄 2、XposedBr…

HEVC-SCC rgb file input

關鍵字 csc allocateCSCBuffer&#xff08;&#xff09;-> m_apcPicYuvCSC xCheckRDCostIntraCSC():更簡單&#xff0c; enum ACTRDTestTypes { ACT_TWO_CLR 0, //two color space ACT_TRAN_CLR 1, //transformed color space ACT_ORG_CL…

補充:如何提高selenium的運行速度?

已經通讀該專欄文章的同學,或許對UI自動化測試有了一定的掌握,細心的同學肯定會發現一個問題,當用例量達到一定程度時,對于整體用例的執行速度肯定不會很滿意。除了應用多線程運行用例的方式加快速度,有沒有其他的方法呢? 今天告訴大家,方法是有的!也是本人新學的。即…

[PyTorch][chapter 66][強化學習-值函數近似]

前言 現實強化學習任務面臨的狀態空間往往是連續的,無窮多個。 這里主要針對這種連續的狀態空間處理。后面DQN 也是這種處理思路。 目錄&#xff1a; 1&#xff1a; 原理 2&#xff1a; 梯度更新 3&#xff1a; target 和 預測值 4 流程 一 原理 強化學習最重要的是得到 …

c++版本opencv計算灰度圖像的輪廓點

代碼 #include<iostream> #include<opencv.hpp>int main() {std::string imgPath("D:\\prostate_run\\result_US_20230804_141531\\mask\\us\\104.bmp");cv::Mat imgGray cv::imread(imgPath, 0);cv::Mat kernel cv::getStructuringElement(cv::MORPH…

任意分圓環下的 RLWE:如何產生正確的噪聲分布

參考文獻&#xff1a; [Con09] Conrad K. The different ideal[J]. Expository papers/Lecture notes. Available at: http://www.math.uconn.edu/~kconrad/blurbs/gradnumthy/different.pdf, 2009.[LPR10] Lyubashevsky V, Peikert C, Regev O. On ideal lattices and learn…

thinkphp6生成PDF自動換行

composer安裝 composer require tecnickcom/tcpdf 示例 use TCPDF;public function info($university,$performance,$grade,$major){//獲取到當前域名$domain request()->domain();//實例化$pdf new TCPDF(P, mm, A4, true, UTF-8, false);// 設置文檔信息$pdf->SetCr…

Azkaban極簡使用文檔

登錄 地址: http://服務器ip:8081/, 用戶名密碼默認都是azkaban 構建項目流程 添加Project 編寫工作流文件 在本機新建文件夾如test, 創建一個flow20.project 文件, 內容 azkaban-flow-version: 2.0(固定步驟)編寫flow文件, 例如一個最基礎的實例 test1.flow nodes:- name…

JAVA序列化和反序列化

JAVA序列化和反序列化 文章目錄 JAVA序列化和反序列化序列化什么是序列化&#xff1f;為什么要進行序列化?如何將對線進行序列化具體實現過程 完整代碼 序列化 什么是序列化&#xff1f; 就是將對象轉化為字節的過程 為什么要進行序列化? 讓數據更高效的傳輸讓數據更好的…

Vue中的$nextTick

?&#x1f308;個人主頁&#xff1a;前端青山 &#x1f525;系列專欄&#xff1a;Vue篇 &#x1f516;人終將被年少不可得之物困其一生 依舊青山,本期給大家帶來vue篇專欄內容:vue中的$nextTick 目錄 &#x1f40b;Vue中的$nextTick有什么作用&#xff1f; &#x1f40b;一、…

socket can中是如何根據 結構體can_bittiming_const中的字段 計算bitrate的?

在 SocketCAN 中&#xff0c;can_bittiming_const 結構體用于表示 CAN 總線的定時參數&#xff0c;包括位率&#xff08;bitrate&#xff09;的計算。can_bittiming_const 包含了許多與位率相關的參數&#xff0c;其中一些參數用于計算實際的位率。 下面是一些與位率計算相關的…

小辰的智慧樹(差分+前綴和)

登錄—專業IT筆試面試備考平臺_牛客網 1.考慮總長度之和不能超過m&#xff0c;2考慮限制每棵樹高度不能低于ci&#xff0c;如果用二分最短輸能截到的高度&#xff0c;還要另外去判斷&#xff0c;是否每棵樹mid都能嚴格大于ci &#xff0c;這樣容易超時&#xff0c;換個角度&…