Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje
Uputstvo Članstvo Kalendar Današnje poruke Pretraži

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 21.5.2015, 9:28   #1
RUSuper
Deo inventara foruma
 
Član od: 10.11.2007.
Lokacija: Moskva
Poruke: 4.760
Zahvalnice: 2.120
Zahvaljeno 786 puta na 496 poruka
Slanje poruke preko MSN-a korisniku RUSuper Slanje poruke preko Skypea korisniku RUSuper
Određen forumom Pomoć oko zadatka OpenCV,visual studio

Narode imam problem.Dobio sam zadatak da odradim u kome treba (1):da učitam video sekvencu preko kamere i konvertujem iz RGB u YUV gde se dalje radi na Y komponenti a U i V se ne diraju,(2)zatim detekcija ivica u sakom frejmu gde se ivice proračunavaju preko sopstveno implementirane funkcije Gaussian of Laplacian i Canny edge detection potrebno je za oba slučaja prikazati imshow rezultate.(3)Potrebno je pooštriti sliku,Y komponenta ulazne slike se obrađuje preko low pass filtra i high pass filtra,Kerneli se mogu proizvoljno odabrati i primeniti konvolucija.(4)Aktivirati jedan frejm ulazne sekvence i konačne izlazne i generisati njihove histograme Z komponente.

E sad Deo sa ivicama (2) sam odradio,ali bez Laplacian-a.Kod za taj deo:
Spoiler za main.cpp:
#include "opencv2/opencv.hpp"

using namespace cv;

int main(int, char**)
{
VideoCapture cap(0); // Otvaranje kamere
if(!cap.isOpened()) // Provera
return -1;

Mat edges;
namedWindow("Kamera Ivice",1);
for(;
{
Mat frame;
cap >> frame;
cvtColor(frame, edges, CV_BGR2GRAY);
GaussianBlur(edges, edges, Size(7,5), 1.5, 1.5);
imshow("Gaussian",edges); // Prozor Gaussian (Stavka 2)
Canny(edges, edges, 0, 30, 3);
imshow("Ivice", edges); // Prozor Canny Edge Detection (Stavka 2)
if(waitKey(30) >= 0) break;


}

return 0;
}


Prvi deo zadatka sam pokušavao da radim na 100 različitih načina,ali bez uspeha,u principu kada loadujem sliku kod bi izgledao ovako:

Spoiler za Main.cpp:
#include <opencv/cv.h>
#include <opencv/highgui.h>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/core/core.hpp"

#include <iostream>
#include <stdio.h>

using namespace cv;
using namespace std;

#include "fun.h"

const string windowName = "Histogram Ekvilizacija";
const string windowName1 = "Tone Mapping";

int main(int argc, char *argv[])
{
namedWindow(windowName, CV_WINDOW_AUTOSIZE);
namedWindow(windowName1, CV_WINDOW_AUTOSIZE);
namedWindow("InputImage", CV_WINDOW_AUTOSIZE);

Mat inImage = imread("bla bla.jpg");

Mat inImageYUV, inImageYUVp, inImagep, inImagepOF;

imshow("InputImage",inImage);

FILE *fp = fopen("hist.txt","w");
int *hist = new int[256];
for(int i=0;i<256;i++) hist[i]=0;

cvtColor(inImage, inImageYUV, CV_RGB2YCrCb);

computeHistogram(inImageYUV,hist,fp);

Mat outImageYUV = inImageYUV.clone();
enhancementContrast(inImageYUV,outImageYUV);

FILE *fpo1 = fopen("histo1.txt","w");
int *histo1 = new int[256];
for(int i=0;i<256;i++) histo1[i]=0;
computeHistogram(outImageYUV,histo1,fpo1);


vector<Mat> yuv_planesIn;
vector<Mat> yuv_planesOut;

split( inImageYUV, yuv_planesIn );

Mat src = yuv_planesIn[0];
Mat dst;

equalizeHist(src, dst);

yuv_planesOut.push_back(dst);
yuv_planesOut.push_back(yuv_planesIn[1]);
yuv_planesOut.push_back(yuv_planesIn[2]);

merge(yuv_planesOut,inImageYUVp);


FILE *fpo2 = fopen("histo2.txt","w");
int *histo2 = new int[256];
for(int i=0;i<256;i++) histo2[i]=0;
computeHistogram(inImageYUVp,histo2,fpo2);

cvtColor(inImageYUVp, inImagep, CV_YCrCb2RGB);
cvtColor(outImageYUV, inImagepOF, CV_YCrCb2RGB);
imshow(windowName,inImagep);
imshow(windowName1,inImagepOF);

waitKey(0);
destroyWindow(windowName);

fclose(fp);
delete [] hist;
fclose(fpo1);
delete [] histo1;
fclose(fpo2);
delete [] histo2;

}


Spoiler za Fun.h:
#include <opencv/cv.h>
#include <opencv/highgui.h>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/core/core.hpp"

#include <iostream>
#include <stdio.h>

using namespace cv;
using namespace std;

#define X1 50.
#define Y1 10.
#define X2 200.
#define Y2 240.
#define X3 255.
#define Y3 255.

void computeHistogram(Mat inImageYUV,int *hist,FILE *fp);
void enhancementContrast(Mat inImageYUV,Mat &outImageYUV);


Spoiler za fun.cpp:

#include "fun.h"

void computeHistogram(Mat inImageYUV,int *hist,FILE *fp){

int width = inImageYUV.cols;
int height = inImageYUV.rows;

int val;

for(int i=0;i<width;i++)
for(int j=0;j<height;j++){

val = inImageYUV.at<Vec3b>(j,i).val[0];
hist[val]++;

}

for(int c = 0;c<255;c++) fprintf(fp,"%d \n",hist[c]);
}

void enhancementContrast(Mat inImageYUV,Mat &outImageYUV){

int width = inImageYUV.cols;
int height = inImageYUV.rows;

double a1 = Y1/X1;
double b1 = 0.;

double a2 = (Y2-Y1)/(X2-X1);
double b2 = Y1-a2*X1;

double a3 = (Y3-Y2)/(X3-X2);
double b3 = Y2-a3*X2;

int val;

for(int i=0;i<width;i++)
for(int j=0;j<height;j++){

val = inImageYUV.at<Vec3b>(j,i).val[0];

if(val<X1){
outImageYUV.at<Vec3b>(j,i).val[0] = (int)(a1*(double)val + b1);
}
else if(val<X2){
outImageYUV.at<Vec3b>(j,i).val[0] = (int)(a2*(double)val + b2);
}
else if(val<X3){
outImageYUV.at<Vec3b>(j,i).val[0] = (int)(a3*(double)val + b3);
}
}

}




Do dela 3 i 4 nisam ni stigao očigledno,ali bi mi pomoć oko dela 1 i 2 dobro došla.
RUSuper je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi


Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
Pomoć oko materijala za seminarski prudentia Brbljaonica 0 25.11.2009 13:52
Pomoć oko zadatka u Javi Viper1983 Programiranje 0 17.5.2009 17:17
Pomoć oko elementarnog zadatka u Delphiju stefdza90 Programiranje 3 23.12.2008 23:28
Pomoć MirkoSvemirko ŠDK - Prenosni računari 13 25.10.2008 0:57
[Legend of Zelda - The Minish Cap] -> pomoć Geomaster Konzole 30 10.9.2007 14:05


Sva vremena su po Griniču +2 h. Sada je 0:26.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2024, vBulletin Solutions, Inc.
Hosted by Beograd.com