W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在本教程中,您將學(xué)習(xí)如何:
在非常一般的意義上,相關(guān)性是圖像的每個(gè)部分和運(yùn)算符(內(nèi)核)之間的操作。
內(nèi)核本質(zhì)上是固定大小的數(shù)字系列數(shù)組,以及該陣列中的一個(gè)錨點(diǎn),通常位于中心。
假設(shè)您想知道圖像中特定位置的結(jié)果值。相關(guān)值的計(jì)算方式如下:
以方程式的形式表達(dá)上述程序,我們將具有:
幸運(yùn)的是,OpenCV為您提供了函數(shù)cv :: filter2D,因此您不必對(duì)所有這些操作進(jìn)行編碼。
該程序?qū)⑹褂么笮?,5,7,9和11的內(nèi)核執(zhí)行過(guò)濾操作。
2. 教程代碼如下所示。您也可以從這里下載
#include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
using namespace cv;
int main ( int argc, char** argv )
{
Mat src, dst;
Mat kernel;
Point anchor;
double delta;
int ddepth;
int kernel_size;
const char* window_name = "filter2D Demo";
String imageName("../data/lena.jpg"); // by default
if (argc > 1)
{
imageName = argv[1];
}
src = imread( imageName, IMREAD_COLOR ); // Load an image
if( src.empty() )
{ return -1; }
anchor = Point( -1, -1 );
delta = 0;
ddepth = -1;
int ind = 0;
for(;;)
{
char c = (char)waitKey(500);
if( c == 27 )
{ break; }
kernel_size = 3 + 2*( ind%5 );
kernel = Mat::ones( kernel_size, kernel_size, CV_32F )/ (float)(kernel_size*kernel_size);
filter2D(src, dst, ddepth , kernel, anchor, delta, BORDER_DEFAULT );
imshow( window_name, dst );
ind++;
}
return 0;
}
Explanation
String imageName("../data/lena.jpg"); // by default
if (argc > 1)
{
imageName = argv[1];
}
src = imread( imageName, IMREAD_COLOR ); // Load an image
if( src.empty() )
{ return -1; }
anchor = Point(-1,-1);
delta = 0;
ddepth = -1;
kernel_size = 3 + 2*( ind%5 );
kernel = Mat::ones( kernel_size, kernel_size, CV_32F )/ (float)(kernel_size*kernel_size);
第一行是將kernel_size更新為在范圍內(nèi)的奇數(shù)值:[3,11]。第二行實(shí)際上通過(guò)將其值設(shè)置為1′s 填充矩陣并通過(guò)將其除以元素?cái)?shù)量進(jìn)行規(guī)范化來(lái)構(gòu)建內(nèi)核。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: