我想衡量亮度值。圖像處理:亮度加權
實施例: 我有亮度值的矢量:
vector <int> lum {50,100,150,200,250);
我有係數的向量:
vector <float> coef {5.1 , 2.55 , 1.7 , 1.275, 1.02 }
我創建一個空的圖像:
Mat1 m(15):
所以,我的第一個亮度值是50(lum [0] = 50),我希望它應用在5.1(coef [0] = 5.1)f我矩陣的第一個像素。要做到這一點,我需要用第一個和第二個亮度值來加權第六個像素。在我的情況下,我的第6個像素的亮度將爲95,因爲(0.1 * 50)+(0.9 * 100)= 95現在,對於第二個係數(coef [1] = 2.55)以前的計算在2.55上使用了0.9。該係數仍爲1,65,因此第7個像素將具有100個亮度,並且第8個將具有(0.65 * 100)+(0.35 * 150)= 117,5。
等等......
Actualy我有這樣的:
//Blibliothèque Opencv
#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui/highgui.hpp"
// cpp include
#include <iostream>
#include <cmath>
#include <math.h>
#include <string.h>
#include <vector>
#include <opencv2/opencv.hpp>
#define MPI 3.14159265358979323846264338327950288419716939937510
#define RAD2DEG (180./MPI)
using namespace cv;
using namespace std;
vector <int> lum{ 50, 100, 150, 200, 250 };
vector <float> coef (5,0);
vector <int> newv(15, 0);
float pixelRef = 255, angle = 0, coeff = 0;
int main()
{
for (int n = 0; n < lum.size(); ++n)
{
//get angle
angle = ((acos(lum[n]/pixelRef)));
cout << "angle :" << angle*RAD2DEG << endl;
// get coefficient
coef [n] = (1/(cos(angle)));
cout << "coeff :" << coef [n] << endl;
// try to weighted my pixels
newv[n] = (coef*lum[n]) + ((1 - coeff)*lum[n + 1]);
}
return 0;
}
你嘗試過什麼到目前爲止?爲什麼圖像只有15個元素? – Miki
不是,我鍵入了一些代碼,但它不起作用。 15只是一個例子,也許我應該使用矢量。 –
請將您的代碼放入問題中。雖然我們在這裏提供幫助,但很高興看到您實際上嘗試了某些內容,而不是僅僅需要其他人爲您編寫代碼。 – Miki