Exemple #1
0
Matrix *new_M(int M, int N){
	//cria mtriz Ma x Na de zeros
	Matrix *A = NULL;
	int i, j;
	
	if(N > 0 && M > 0)
		{
		A = (Matrix *)aloca(sizeof(Matrix));
		A->a = (double **)aloca(M*sizeof(double *));
		for(i = 0; i < M; i++)
			A->a[i] = (double *)aloca(N*sizeof(double));
			
		A->rows 		= M;
		A->columns 		= N;

		for(i = 0; i < A->rows; i++)
			for(j = 0; j < A->columns; j++)
					A->a[i][j] = 0;
		}
	else
		{
			char msg[50];
			sprintf(msg, "new_M recebeu tamanhos não positivos!\n");
			reportBad(msg);
		}
	return(A);
	}
Exemple #2
0
Matrix *subtract(Matrix *A,Matrix *B)
{
	/*retorna ponteiro alocado para a matriz soma das entradas*/
	int i, j, M, N;
	Matrix *S;
		
	if(A->rows == B->rows && A->columns == B->columns)
		{
				M = A->rows;
				N = A->columns;
				S = new_M(M, N);
				for(i = 0; i < M; i++)
					{
					for(j = 0; j < N; j++)
						S->a[i][j] = A->a[i][j] - B->a[i][j]; 
					}
		}
	else
		{
		char msg[50];
		sprintf(msg, "Matrizes não tem mesmas dimensões!\n");
		reportBad(msg);
		}
	return(S);	
}
Exemple #3
0
void Widget::recordStep(){
    QString file = ui->baseNameLineEdit->text();
    file = file + QString::number(imageCounter++) + ",png";

    const QPixmap *img = ui->OutputImg->pixmap();

    bool sucesso = img->save(file, "PNG");

    if(sucesso == true)
        {
        ui->recorTimeLabel->setText("Tomadas " + QString::number(imageCounter));
        }
    else
        reportBad("Imagem não pode ser salva!");
}
Exemple #4
0
void kill_M(Matrix **A){
	/*apaga a matriz e o seu ponteiro
	 * */
	int i;

	if(*A)
		{
		for(i = 0; i < (*A)->rows; i++)
				libera((*A)->a[i]);

		libera((*A)->a);	
		libera(*A);
		(*A) = NULL;
		}
	else 
		reportBad("kill_M recebeu matriz não alocada!");
	}
Exemple #5
0
void Widget::initVideo(){
    bool sucesso;
    for(int i = 0; i < 10; i++)
    {
        sucesso = openVideo(i);
        if(sucesso)
            ui->selectVideoComboBox->addItem(QString("Câmera") + QString::number(i));
    }
    for(int i = 0; i < 10; i++)
    {
        sucesso = openVideo(i);
        if(sucesso)
            break;
    }
    if(sucesso == false)
    {
        reportBad("Nenhum vídeo de 0 à 10 pode ser inicializado!");
        this->clock->stop();
    }
}
Exemple #6
0
void Widget::drawKalmanResult(Mat &outputFrame, vector<Point> &kalmanCenters){
    vector<Vec3f> kalmanCircles;
    vector<Scalar> colorsToPaint;

    float radiusKalmanCircles = Raio;
    //raio é uma variável global definida na interface em tempo de execução

    if(kalmanCenters.size() != targets.size())
        reportBad("O numero de elementos a desenhar e diferente do numero de alvos procurados!");

    //gera circulos a serem desenhados
    for(unsigned int i = 0; i < kalmanCenters.size(); i++){
            Vec3f currentCircle(kalmanCenters[i].x, kalmanCenters[i].y,
                  radiusKalmanCircles);
            kalmanCircles.push_back(currentCircle);

            colorsToPaint.push_back(targets[i]->colorPaint);
    }

    Draw::Circles(outputFrame, kalmanCircles, colorsToPaint);
}
Exemple #7
0
bool Widget::openVideo(int n){
    if(videoInput == NULL)
        videoInput = new VideoCapture(n);
    else
    {
        videoInput->release();
        videoInput->open(n);
    }

    if(!videoInput->isOpened()){
       stringstream msg;
       msg << "webcam " << n << " não pode ser aberta";
       reportBad(msg.str());
       return false;
    }

    if(videoInput->isOpened())
        return true;
    else
        return false;
   }
Exemple #8
0
void doGoodBad(struct cdnaInfo *ciList)
{
struct cdnaInfo *ci;
int goodCount = 0;
int badCount = 0;
int poorCount = 0;
struct fineAli *fa;
int bestScore;

for (ci=ciList; ci!=NULL; ci = ci->next)
    {
    if (ci->isDupe)
        continue;
    if (ci->fineAli == NULL)
        {
        reportBad("%s score %d\n", ci->name, 0);
        if (ci->roughScore > 32 && ci->roughScore >  ci->baseCount/8)
            addRedoHash(ci, "dropped");
        ++badCount;
        continue;
        }
    bestScore = ci->fineScore;
    if (bestScore < ci->baseCount/2)
        {
        fa = ci->fineAli;
        reportBad("%s score %f at chromosome %s:%ld-%ld gene %s\n", ci->name, (double)bestScore / (double)ci->baseCount,
            chromNames[fa->chromIx], fa->hStart, fa->hEnd, fa->geneName);
        addRedoHash(ci, "poor");
        ++poorCount;
        continue;
        }
    reportGood("cDNA %s size %d %s\n", 
        ci->name, ci->baseCount, (ci->isEmbryonic ? "embryo" : "unknown"));
    for(fa = ci->fineAli;fa!=NULL; fa = fa->next)
        {
        if (fa->isDupe)
            continue;
        if (fa->score >= bestScore)
            {
            char *chromName = chromNames[fa->chromIx];
            struct ffAli *ali, *lastAli = NULL;

            fa->isGood = TRUE;
            reportGood("\tscore %f chromosome %s strand %c %c gene %s\n",
                (double)fa->score / (double)ci->baseCount, chromName, 
                (fa->isRc ? '-' : '+'), (fa->isBackwards ? '-' : '+'), fa->geneName);
            for (ali=fa->blocks; ali != NULL; ali = ali->right)
                {
                reportGood("\t\t%3d %3d | %d %d size %3d goodEnds %2d %2d", 
                    ali->nStart - fa->virtNeedle, ali->nEnd - fa->virtNeedle,
                    ali->hStart - fa->virtHaystack, ali->hEnd - fa->virtHaystack,
                    ali->nEnd - ali->nStart, ali->startGood, ali->endGood);
                if (lastAli != NULL)
                    reportGood(" gap %d | %d", 
                        ali->nStart - lastAli->nEnd, ali->hStart - lastAli->hEnd);
                reportGood("\n");
                lastAli = ali;
                }
            }
        }
    ++goodCount;
    }
printf("%d Good %d Poor %d Bad\n", goodCount, poorCount, badCount);
}
Exemple #9
0
void Widget::pauseVideo(){
    this->clock->stop();
    reportBad("O video esta sendo pausado");
}