OpenCV學(xué)習(xí)方框濾波實現(xiàn)圖像處理代碼示例
一、方框濾波
方框濾波是均值濾波的一種形式。在均值濾波中,濾波結(jié)果的像素值是任意一個點的鄰域平均值,等于各鄰域像素值之和的均值,而在方框濾波中,可以自由選擇是否對均值濾波的結(jié)果進行歸一化,即可以自由選擇濾波結(jié)果是鄰域像素值之和的平均值,還是鄰域像素值之和。
二、C++代碼
#include <iostream>
#include <opencv2\opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
//---------------------------用于方框濾波的圖像--------------------
Mat img = imread("1.jpg");
if (img.empty())
{
cout << "請確認圖像文件名稱是否正確" << endl;
return -1;
}
//將CV_8U類型轉(zhuǎn)換成CV_32F類型,避免計算后的數(shù)據(jù)過大
Mat equalImg_32F;
img.convertTo(equalImg_32F, CV_32F, 1.0 / 255);
Mat resultNorm, result, equalImg_32FSqr;
//--------------------------方框濾波boxFilter----------------------
boxFilter(img, resultNorm, -1, Size(3, 3), Point(-1, -1), true); // 進行歸一化,則為均值濾波
boxFilter(img, result, -1, Size(3, 3), Point(-1, -1), false); // 不進行歸一化
//----------------------方框濾波sqrBoxFilter()---------------------
//對每個像素數(shù)值的平方求和/求均值
sqrBoxFilter(equalImg_32F, equalImg_32FSqr, -1, Size(3, 3), Point(-1, -1), true, BORDER_CONSTANT);
//-------------------------顯示處理結(jié)果----------------------------
imshow("原始圖像", img);
imshow("歸一化", resultNorm);
imshow("不歸一化", result);
imshow("平方和求均值", equalImg_32FSqr);
waitKey(0);
return 0;
}
三、python代碼
import cv2
import matplotlib.pyplot as plt
# 讀取圖片
img = cv2.imread('1.jpg')
# BGR轉(zhuǎn)為RGB,方便plot函數(shù)顯示
source = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 方框濾波,True表示歸一化,則效果與均值濾波相同。
result = cv2.boxFilter(source, -1, (5, 5), normalize=False)
# sqrBoxFilter實現(xiàn)對每個像素值的平方求和
# result1 = cv2.sqrBoxFilter(source, -1, (5, 5), normalize=True)
# 顯示圖形
titles = ['Source Image', 'BoxFilter Image']
images = [source, result]
for i in range(2):
plt.subplot(1, 2, i + 1), plt.imshow(images[i], 'gray')
plt.title(titles[i])
plt.xticks([]), plt.yticks([])
plt.show()
四、結(jié)果展示
1、原始圖像

2、歸一化

3、不歸一化

4、平方和求均值

以上就是OpenCV學(xué)習(xí)方框濾波實現(xiàn)圖像處理代碼示例的詳細內(nèi)容,更多關(guān)于OpenCV方框濾波實現(xiàn)圖像處理的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
關(guān)于keras中卷積層Conv2D的學(xué)習(xí)記錄
這篇文章主要介紹了關(guān)于keras中卷積層Conv2D的學(xué)習(xí)記錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02
Python 數(shù)據(jù)的累加與統(tǒng)計的示例代碼
這篇文章主要介紹了Python 數(shù)據(jù)的累加與統(tǒng)計的示例代碼,文中講解非常細致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-08-08
Python中的數(shù)據(jù)分組統(tǒng)計、分組運算及透視方式
這篇文章主要介紹了Python中的數(shù)據(jù)分組統(tǒng)計、分組運算及透視方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
python實現(xiàn)簡單socket程序在兩臺電腦之間傳輸消息的方法
這篇文章主要介紹了python實現(xiàn)簡單socket程序在兩臺電腦之間傳輸消息的方法,涉及Python操作socket的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03
Python數(shù)據(jù)可視化之Matplotlib初級使用指南
Matplotlib是Python中最常用的數(shù)據(jù)可視化庫之一,它提供了豐富的圖表類型和靈活的自定義選項,能幫助我們以更直觀的方式理解數(shù)據(jù),本文將對Matplotlib的基本功能進行介紹,包括如何創(chuàng)建和自定義圖表等2023-07-07

