国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

OpenCV——Scharr邊緣檢測

這篇具有很好參考價值的文章主要介紹了OpenCV——Scharr邊緣檢測。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

OpenCV——Scharr邊緣檢測,OpenCV 圖像/點云處理,opencv,計算機視覺,人工智能,python,開發(fā)語言,算法

OpenCV——Scharr邊緣檢測由CSDN點云俠原創(chuàng),爬蟲自重。如果你不是在點云俠的博客中看到該文章,那么此處便是不要臉的爬蟲。

一、Scharr算法

1、算法概述

? ?Scharr邊緣檢測算法是對Sobel算子差異性的增強,因此兩者在檢測圖像邊緣的原理和使用方式上相同。Scharr算子的邊緣檢測濾波尺寸為3x3,因此也可稱其為Scharr濾波器??梢酝ㄟ^將濾波器中的權重系數(shù)放大來增大像素見的差異,Scharr算子就是采用這種思想,其在X方向一階Scharr邊緣檢測算子為:
[ ? 3 0 3 ? 10 0 10 ? 3 0 3 ] (1) \left[ \begin{matrix} -3 & 0 & 3\\ -10 & 0 & 10 \\ -3 & 0 & 3 \end{matrix} \right] \tag{1} ??3?10?3?000?3103? ?(1)
Y方向一階Scharr邊緣檢測算子為:
[ ? 3 10 ? 3 0 0 0 3 10 3 ] (2) \left[ \begin{matrix} -3 & 10 & -3\\ 0 & 0 & 0 \\ 3 & 10 & 3 \end{matrix} \right] \tag{2} ??303?10010??303? ?(2)

2、主要函數(shù)

void Scharr( InputArray src, OutputArray dst, int ddepth,
                          int dx, int dy, double scale = 1, double delta = 0,
                          int borderType = BORDER_DEFAULT )
  • src:傳入的圖像
  • ddepth:圖像的深度,可以為-1、CV_16S、CV_32F、CV_64F。
  • dx、dy:指的是求導的階數(shù),0表示這個方向上沒有求導,所填的數(shù)一般為0、1、2。
  • scale:計算可選比例因子,默認值1 。
  • delta:加到輸出像素的偏值,默認為0 。
  • borderType:邊界類型,默認值BORDER_DEFAULT。

二、C++代碼

#include <opencv2\opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
	//讀取圖像,黑白圖像邊緣檢測結果較為明顯
	Mat img = imread("2.jpg", IMREAD_ANYDEPTH);
	if (img.empty())
	{
		cout << "請確認圖像文件名稱是否正確" << endl;
		return -1;
	}
	Mat resultX, resultY, resultXY;

	//X方向一階邊緣
	Scharr(img, resultX, CV_16S, 1, 0);
	convertScaleAbs(resultX, resultX);

	//Y方向一階邊緣
	Scharr(img, resultY, CV_16S, 0, 1);
	convertScaleAbs(resultY, resultY);

	//整幅圖像的一階邊緣
	resultXY = resultX + resultY;

	//顯示圖像
	imshow("resultX", resultX);
	imshow("resultY", resultY);
	imshow("resultXY", resultXY);
	waitKey(0);
	return 0;
}

三、python代碼

import cv2

img = cv2.imread("2.jpg")
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# -------------------Scharr邊緣檢測------------------------
x = cv2.Scharr(gray_img, cv2.CV_16S, 1, 0)
y = cv2.Scharr(gray_img, cv2.CV_16S, 0, 1)
# cv2.convertScaleAbs(src[, dst[, alpha[, beta]]])
# 可選參數(shù)alpha是伸縮系數(shù),beta是加到結果上的一個值,結果返回uint類型的圖像
Scharr_absX = cv2.convertScaleAbs(x)  # convert 轉(zhuǎn)換  scale 縮放
Scharr_absY = cv2.convertScaleAbs(y)
result = cv2.addWeighted(Scharr_absX, 0.5, Scharr_absY, 0.5, 0)
# ----------------------顯示結果----------------------------
cv2.imshow('origin_img', img)
cv2.imshow('img', gray_img)
cv2.imshow('Scharr_absX', Scharr_absX)
cv2.imshow('Scharr_absY', Scharr_absY)
cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

四、結果展示

1、灰度圖

OpenCV——Scharr邊緣檢測,OpenCV 圖像/點云處理,opencv,計算機視覺,人工智能,python,開發(fā)語言,算法

2、X方向一階邊緣

OpenCV——Scharr邊緣檢測,OpenCV 圖像/點云處理,opencv,計算機視覺,人工智能,python,開發(fā)語言,算法

2、Y方向一階邊緣

OpenCV——Scharr邊緣檢測,OpenCV 圖像/點云處理,opencv,計算機視覺,人工智能,python,開發(fā)語言,算法

3、整幅圖像的一階邊緣

OpenCV——Scharr邊緣檢測,OpenCV 圖像/點云處理,opencv,計算機視覺,人工智能,python,開發(fā)語言,算法

五、相關鏈接

[1] Scharr(邊緣提?。?span toymoban-style="hidden">文章來源地址http://www.zghlxwxcb.cn/news/detail-817413.html

到了這里,關于OpenCV——Scharr邊緣檢測的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包