rEVOLV3r
Messages postés223Date d'inscriptionjeudi 12 août 2010StatutMembreDernière intervention21 septembre 2022
-
Modifié par pijaku le 18/12/2013 à 09:01
Bonjour à tous,
Je suis un débutant en opencv c++ et j'aurais grandement besoin de votre aide...
Voila je dois créer un programme qui, à l'aide de trackbar puisse modifier la couleur, le contrast et la luminosité sur l'image prise par la caméra.
La plupart de mon code est des morceaux pris par ci par là et je m'en sort pas avec la première trackbar. J'aimerais qu'elle apparaisse sur l'image qui est de couleur différente et qu'elle agisse sur celle-ci et pas l'image prise directement par la caméra.
Si vous pouviez me donner un coup de main, ca serait juste super ! Pour le reste des trackbar a faire, je pense que j'arriverai à m'en sortir seul si une est déjà paramétrée correctement.
Je vous remercie beaucoup d'avance !
PS: je code sur Eclipse et les librairies à ajouter dans le projetpour le faire fonctionner sont :
opencv_core
opencv_highui
Voici mon code :
______
/**
* @brief main function
* @file main.cpp
* @author gregory.medwed@heig-vd.ch
*/
#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
#include <stdio.h>
using namespace std;
using namespace cv;
VideoCapture stream1(0); //0 is the id of video device.0 if you have only one camera.
cv::Mat camera;
void MyCallbackForBrightness(int iValueForBrightness, void *userData)
{
Mat dst;
int iValueForContrast = *( static_cast<int*>(userData) );
//Calculating brightness and contrast value
int iBrightness = iValueForBrightness - 50;
double dContrast = iValueForContrast / 50.0;
//Calculated contrast and brightness value
cout << "MyCallbackForBrightness : Contrast=" << dContrast << ", Brightness=" << iBrightness << endl;
//adjust the brightness and contrast
camera.convertTo(dst, -1, dContrast, iBrightness);
//show the brightness and contrast adjusted image
imshow("Cam", dst);
}
int main()
{
////////////////////////////////////////////////////
///////////INITIALISATION DES VARIABLES/////////////
////////////////////////////////////////////////////
int flag = 0;
int StartStop = 1;
char touche;
//Variables de l'ajout d'un coefficient aux couleurs. Ces variables sont modifiées directement dans les trackbars
int Red=40;
int Green=-50;
int Blue=-75;
//Ces constantes représentes la valeur actuelle du pixel(y,x) + le nombre ajouté par la trackbar
int ValRed=0;
int ValGreen=0;
int ValBlue=0;
do
{
stream1.read(camera);
touche = waitKey(1);
//Modification de la couleur des pixels un à un par les boucles FOR
for(int y=0;y<480;y++) //Trouver comment mettre longueur en variable et la hauteur
{
for(int x=0;x<640;x++)
{
ValBlue = camera.at<cv::Vec3b>(y,x)[0]+Blue;
ValGreen = camera.at<cv::Vec3b>(y,x)[1]+Green;
ValRed = camera.at<cv::Vec3b>(y,x)[2]+Red;
if (ValBlue <= 0) ValBlue = 0;
if (ValBlue >= 255) ValBlue = 255;
camera.at<cv::Vec3b>(y,x)[0] = ValBlue;
if (ValGreen <= 0) ValGreen = 0;
if(ValGreen >= 255) ValGreen = 255;
camera.at<cv::Vec3b>(y,x)[1] = ValGreen;
if (ValRed <= 0) ValRed = 0;
if(ValRed >= 255) ValRed = 255;
camera.at<cv::Vec3b>(y,x)[2] = ValRed;
}
}
switch (touche)
{
case ' ':
flag=1;
// Start ou stop?
StartStop = StartStop*-1;
cout<<StartStop<<endl;
cout << "touche espace!" << endl;
break;
case 'c':
flag=2;
cout << "touche c!" << endl;
break;
}
imshow("cam", camera);
// Create a window
namedWindow("Cam");
int iValueForBrightness = 50;
int iValueForContrast = 50;
//Create track bar to change brightness
createTrackbar("Brightness", "Cam", &iValueForBrightness, 100, MyCallbackForBrightness, &iValueForContrast);
}while(touche != 27);
return 0;
}