C++實(shí)現(xiàn)OpenCV方框?yàn)V波的代碼
一、方框?yàn)V波
方框?yàn)V波是均值濾波的一種形式。在均值濾波中,濾波結(jié)果的像素值是任意一個(gè)點(diǎn)的鄰域平均值,等于各鄰域像素值之和的均值,而在方框?yàn)V波中,可以自由選擇是否對(duì)均值濾波的結(jié)果進(jìn)行歸一化,即可以自由選擇濾波結(jié)果是鄰域像素值之和的平均值,還是鄰域像素值之和。
二、C++代碼
#include <iostream> #include <opencv2\opencv.hpp> using namespace cv; using namespace std; int main() { //---------------------------用于方框?yàn)V波的圖像-------------------- Mat img = imread("1.jpg"); if (img.empty()) { cout << "請(qǐng)確認(rèn)圖像文件名稱是否正確" << endl; return -1; } //將CV_8U類型轉(zhuǎn)換成CV_32F類型,避免計(jì)算后的數(shù)據(jù)過大 Mat equalImg_32F; img.convertTo(equalImg_32F, CV_32F, 1.0 / 255); Mat resultNorm, result, equalImg_32FSqr; //--------------------------方框?yàn)V波boxFilter---------------------- boxFilter(img, resultNorm, -1, Size(3, 3), Point(-1, -1), true); // 進(jìn)行歸一化,則為均值濾波 boxFilter(img, result, -1, Size(3, 3), Point(-1, -1), false); // 不進(jìn)行歸一化 //----------------------方框?yàn)V波sqrBoxFilter()--------------------- //對(duì)每個(gè)像素?cái)?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) # 方框?yàn)V波,True表示歸一化,則效果與均值濾波相同。 result = cv2.boxFilter(source, -1, (5, 5), normalize=False) # sqrBoxFilter實(shí)現(xiàn)對(duì)每個(gè)像素值的平方求和 # 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、平方和求均值
到此這篇關(guān)于C++ OpenCV方框?yàn)V波的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)OpenCV方框?yàn)V波內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++封裝靜態(tài)鏈接庫(kù)和使用的詳細(xì)步驟
這篇文章主要介紹了C++封裝靜態(tài)鏈接庫(kù)和使用,本文描述了怎么去把一個(gè)C++程序封裝成一個(gè)靜態(tài)庫(kù)并且如何去使用這些靜態(tài)庫(kù),需要的朋友可以參考下2022-08-08C語(yǔ)言實(shí)現(xiàn)順序循環(huán)隊(duì)列實(shí)例
大家好,本篇文章主要講的是C語(yǔ)言實(shí)現(xiàn)順序循環(huán)隊(duì)列實(shí)例,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-02-02C語(yǔ)言實(shí)現(xiàn)折半查找法(二分法)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)折半查找法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11Linux搭建C++開發(fā)調(diào)試環(huán)境的方法步驟
這篇文章主要介紹了Linux搭建C++開發(fā)調(diào)試環(huán)境的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10