ImageDialog::ImageDialog(LfMachine * world, QWidget *parent) : QDialog(parent) { int wd = 100, ht = 100; std::string sprop = "unknown"; std::string stitle = "Unknown Image"; const LfParameter * lparam = world->param(); if(lparam->numImages() > 0) { lparam->getImageSize(wd, ht, 0); sprop = boost::str(boost::format("num pixels %1%") % lparam->imageNumPixels(0) ); stitle = lparam->imageName(0); } m_dictView = new DictionaryView(this); m_statistics = new QLabel(tr(sprop.c_str() )); QVBoxLayout * layout = new QVBoxLayout; layout->addWidget(m_dictView); layout->addWidget(m_statistics); layout->setStretch(0, 1); layout->setContentsMargins(4, 4, 4, 4); setLayout(layout); setWindowTitle(tr(stitle.c_str())); resize(wd, ht+10); connect(this, SIGNAL(sendImage(QImage)), m_dictView, SLOT(recvDictionary(QImage))); }
Server::Server(QObject *parent) : QObject(parent), tcpServer(0), networkSession(0), memBuf(NULL) { QNetworkConfigurationManager manager; if (manager.capabilities() & QNetworkConfigurationManager::NetworkSessionRequired) { // Get saved network configuration QSettings settings(QSettings::UserScope, QLatin1String("QtProject")); settings.beginGroup(QLatin1String("QtNetwork")); const QString id = settings.value(QLatin1String("DefaultNetworkConfiguration")).toString(); settings.endGroup(); // If the saved network configuration is not currently discovered use the system default QNetworkConfiguration config = manager.configurationFromIdentifier(id); if ((config.state() & QNetworkConfiguration::Discovered) != QNetworkConfiguration::Discovered) { config = manager.defaultConfiguration(); } networkSession = new QNetworkSession(config, this); connect(networkSession, SIGNAL(opened()), this, SLOT(sessionOpened())); QTextStream out(stdout); out << tr("Opening network session."); networkSession->open(); } else { sessionOpened(); } connect(tcpServer, SIGNAL(newConnection()), this, SLOT(sendImage())); }
int main(int argc, char *argv[]) { initialize(); sendImage(); finalize(); return 0; }
void TcpController::sendImageHOG(Imagem image, int qtd) { sendImageNotProcess(image.frameNotProcess); sendImage(image.frame,qtd,PORT_IMAGE_HOG); //TcpServer *s = searchTcpServer(port); //s->sendaData(image.nome.toLatin1()); //s->sendaData(image.); }
int leconnect(bool reconnect) { if (can_reconect && reconnect==FALSE) { image_already_bytes = 0; free(image_bytes); } if (app.status == APP_STATUS_TRANSMITTER && image_bytes_length <= 0) { printf("\nNO IMAGE SELECTED!"); } else if (connect() == 0) { conection_open = TRUE; if ( (app.status == APP_STATUS_TRANSMITTER ? sendImage(reconnect) : receiveImage(reconnect)) == 0) { show_display = NO; llclose(app.fd); //save file if receiver if (app.status == APP_STATUS_RECEIVER){ if (save2File(image_bytes, image_bytes_length, image_name) != OK){ printf("\nImage was not saved sucessfully.\n"); free(image_bytes); image_bytes_length = 0; return -1; } free(image_bytes); image_bytes_length = 0; printf("\nImage was saved sucessfully.\n"); } } close_tio(app.fd); conection_open = FALSE; show_display = NO; } return 0; }
void ImageProcessor::filterAutoContrast(RectArea rect, QImage& img, int minGray, int maxGray) { for(int i=0;i<rect.width-1;i++) { for(int j=0;j<rect.height-1;j++) { int current=255/(maxGray-minGray)* (qGray(img.pixel(i+rect.x,j+rect.y))-minGray); if (current>255) current=maxGray; img.setPixel(i+rect.x, j+rect.y, current*0x010101); } } if (DebugMode) { sendImage(*image); writeLog(QString(tr("Autocontrast"))); } }
void ImageProcessor::approximateBorder(RectArea rect, QImage& img) { for(int i=0;i<rect.width-1;i++) { for(int j=0; j<rect.height-1;j++) { if ((abs(i-0)<=2) || (abs(j-0)<=2) || (abs(i-rect.width)<=2) || (abs(j-rect.height)<=2) ) { img.setPixel(i+rect.x,j+rect.y,0x000000); } } } if (DebugMode) { sendImage(*image); writeLog(QString(tr("Drawing black borders"))); } }
void WebcamConfigurationAnalyzer::analyze(const IplImage* currentImage) { if (!currentImage) return; liveVideoFrameCopy = cvCreateImage(cvGetSize(currentImage), 8, 3); cvCopy(currentImage, liveVideoFrameCopy, 0); // declare a destination IplImage object with correct size, depth and channels IplImage *smallImage = cvCreateImage( cvSize(128,128),liveVideoFrameCopy->depth, liveVideoFrameCopy->nChannels ); //use cvResize to resize source to a destination image cvResize(liveVideoFrameCopy, smallImage); emit sendImage(*SimonCV::IplImage2QImage(smallImage)); cvReleaseImage(&smallImage); cvReleaseImage(&liveVideoFrameCopy); }
void ImageProcessor::filterAverage(RectArea rect, QImage& img) { std::vector<std::vector<kaverage> > vsquare (rect.width,std::vector<kaverage>( rect.height)); int average; for(int i=0;i<rect.width;i++) { for(int j=0; j<rect.height;j++) { vsquare[i][j].Gray=qGray(img.pixel(i+rect.x,j+rect.y)); vsquare[i][j].k=0; average+=vsquare[i][j].Gray; } } average=average/(rect.width*rect.height); std::vector<int> arr; for(int i=2;i<rect.width-2;i++) { for(int j=2; j<rect.height-2;j++) { arr.clear(); for (int k=-2; k<=2; k++) { for (int l=-2; l<=2; l++) { if(abs(k*k+l*l)<2) arr.push_back(vsquare[i+k][j+l].Gray); } } int avrg=0; for(int m=0;(static_cast<unsigned int>(m))<arr.size();m++) { avrg+=arr[m]; } avrg/=arr.size(); img.setPixel(i+rect.x,j+rect.y,avrg*0x010101); //qApp->processEvents(); } } if (DebugMode) { sendImage(*image); writeLog(QString(tr("AverageFilter"))); } }
/** * Upload an image to an account * * @param QString imagePath the image path * @param QString tags image tags * @param QString resizeOption the resize option, * default value is resample * @param QString user the user ident * @param QString password the user password * @access private */ void ImageShackUploader::uploadOneImage(ImageShackObject * image, QString userName, QString userPassword) { QHash<QString, QString> headers; //headers["fileupload"] = imageInfos.fileName(); headers["optsize"] = image->getResizeOption(); headers["optimage"] = (image->getResizeOption() == "") ? QString("0") : QString("1"); headers["tags"] = image->getTags(); headers["rembar"] = (this->removeInformationBar == true) ? QString("yes") : QString("no"); headers["public"] = (image->isPublic()) ? QString("yes") : QString("no"); headers["key"] = this->developerKey; headers["xml"] = QString("yes"); if(userName != "" ) { headers["a_username"] = userName; headers["a_password"] = userPassword; } sendImage(image,headers); }
void ImageProcessor::filterMedian(RectArea rect, QImage& img) { std::vector<std::vector<kaverage> > vsquare (rect.width,std::vector<kaverage>( rect.height)); int average; for(int i=0;i<rect.width;i++) { for(int j=0; j<rect.height;j++) { vsquare[i][j].Gray=qGray(img.pixel(i+rect.x,j+rect.y)); vsquare[i][j].k=0; average+=vsquare[i][j].Gray; } } average=average/(rect.width*rect.height); std::vector<int> arr; for(int i=2;i<rect.width-2;i++) { for(int j=2; j<rect.height-2;j++) { arr.clear(); for (int k=-2; k<=2; k++) { for (int l=-2; l<=2; l++) { if(abs(k*k+l*l)<2) arr.push_back(vsquare[i+k][j+l].Gray); } } std::sort(&arr[0], &arr[arr.size()]); img.setPixel(i+rect.x,j+rect.y,arr[ // 0 arr.size()/2 ]*0x010101); //qApp->processEvents(); } } if (DebugMode) { sendImage(*image); writeLog(QString(tr("MedianFilter"))); } }
GraphicsView::GraphicsView() { QGraphicsScene *scene = new QGraphicsScene(0, 0, 600, 400); for (int i = 0; i < 4; ++i) { Circle *item = new Circle; scene->addItem(item); objects << item; } robot = new Robot; //robot->scale(1.2, 1.2); robot->setPos(300, 200); scene->addItem(robot); setScene(scene); setRenderHint(QPainter::Antialiasing); setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate); setBackgroundBrush(QColor(230, 200, 167)); setWindowTitle("Tutorial unit"); connect(&timer, SIGNAL(timeout()), SLOT(sendImage())); reset(false); timer.start(100); sInstance = this; }
void ImageProcessor::filterDilation(RectArea rect, QImage& img) { std::vector<std::vector<kaverage> > vsquare (rect.width,std::vector<kaverage>( rect.height)); int average; for(int i=0;i<rect.width;i++) { for(int j=0; j<rect.height;j++) { vsquare[i][j].Gray=qGray(img.pixel(i+rect.x,j+rect.y)); vsquare[i][j].k=0; average+=vsquare[i][j].Gray; } } average=average/(rect.width*rect.height); for(int i=2;i<rect.width-2;i++) { for(int j=2; j<rect.height-2;j++) { for (int k=-1; k<=1; k++) { for (int l=-1; l<=1; l++) { if ((abs(k)+abs(l))<2) if (vsquare[i+k][j+l].Gray) { img.setPixel(i+rect.x,j+rect.y,0xffffff); break; } if (vsquare[i+k][j+l].Gray) break; } } // img.setPixel(i+rect.x,j+rect.y,arr[ // 0 // arr.size()/2 // ]*0x010101); } } if (DebugMode) { sendImage(*image); writeLog(QString(tr("Dilation"))); } }
YahooWebcam::YahooWebcam( YahooAccount *account ) : QObject( 0 ) { setObjectName( QLatin1String("yahoo_webcam") ); kDebug(YAHOO_GEN_DEBUG) ; theAccount = account; theDialog = 0L; m_img = new QImage(); m_sendTimer = new QTimer( this ); connect( m_sendTimer, SIGNAL(timeout()), this, SLOT(sendImage()) ); m_updateTimer = new QTimer( this ); connect( m_updateTimer, SIGNAL(timeout()), this, SLOT(updateImage()) ); theDialog = new YahooWebcamDialog( "YahooWebcam" ); connect( theDialog, SIGNAL(closingWebcamDialog()), this, SLOT(webcamDialogClosing()) ); #ifndef VIDEOSUPPORT_DISABLED m_devicePool = Kopete::AV::VideoDevicePool::self(); m_devicePool->open(); m_devicePool->setImageSize(320, 240); m_devicePool->startCapturing(); m_updateTimer->start( 250 ); #endif }
void ImageDialog::recvImage(const QImage &image) { if(isVisible() ) emit sendImage(image); }
void ImageProcessor::findPieces(std::vector<std::vector<PieceSquare> > &ChessDesk) { RectArea CurrentSquare=findSquare(0,0); // Finding min and max brightness for autocontrast. int MaxGrayPixel=0; int MinGrayPixel=255; for(int i=0;i<8;i++) { for(int j=0;j<8;j++) { CurrentSquare=findSquare(i,j); for(int k=0;k<CurrentSquare.width-1;k++) { for(int l=0;l<CurrentSquare.height-1;l++) { int CurrentGrayPixel=qGray(image->pixel(CurrentSquare.x+k,CurrentSquare.y+l)); if (CurrentGrayPixel>MaxGrayPixel) { MaxGrayPixel=CurrentGrayPixel; } if (CurrentGrayPixel<MinGrayPixel) { MinGrayPixel=CurrentGrayPixel; } } } } } writeLog(QString(tr("Minimum brightness: %1; Maximium brightness: %2;")).arg(MinGrayPixel).arg(MaxGrayPixel)); int a[256]; for(int i=0;i<256;i++) {a[i]=0;} for(int i=0;i<8;i++) { for(int j=0;j<8;j++) { CurrentSquare=findSquare(i,j); if ((MaxGrayPixel-MinGrayPixel)<128) { filterAutoContrast(CurrentSquare, *image,MinGrayPixel,MaxGrayPixel); filterAverage(CurrentSquare, *image); } filterMedian(CurrentSquare, *image); for(int k=0;k<CurrentSquare.width-1;k++) { for(int l=0;l<CurrentSquare.height-1;l++) { a[qGray(image->pixel(CurrentSquare.x+k,CurrentSquare.y+l))]++; } } CurrentSquare.x--; CurrentSquare.y--; CurrentSquare.width++; CurrentSquare.height++; drawRect(CurrentSquare); } } int max=0; for(int i=0;i<256;i++) { if (a[i]>max) max=a[i]; //writeLog(QString("G %1 %2").arg(i).arg(a[i])); } writeLog(QString("MAX %1").arg(max)); for(int i=0;i<256;i++) { for(int j=0;j<static_cast<int>((static_cast<double>(a[i]))*500/max);j++) { //image->setPixel(i,j,0x0000ff); } } std::vector<int> sorta; for(int i=0;i<256;i++) { sorta.push_back(a[i]); } std::sort(&sorta[0], &sorta[sorta.size()]); std::vector<int> Maximums; for (int i=255;i>=0;i--) { int IsInsideExtr=0; int EnterExtr=0; int LastEnter=-10; for(int j=0;j<256;j++) { if ((a[j]>sorta[i]) && (!IsInsideExtr)) { IsInsideExtr=1; EnterExtr++; if (abs(LastEnter-j)<10) { IsInsideExtr=0; EnterExtr--; Maximums.pop_back(); } else { LastEnter=j; Maximums.push_back(j); writeLog(QString("POS %1").arg(j)); } } if ((a[j]<sorta[i]) && (IsInsideExtr)) { IsInsideExtr=0; } } writeLog(QString("EXT %1").arg(EnterExtr)); if (EnterExtr>=2) {break;} else Maximums.clear(); } std::sort(&Maximums[0], &Maximums[Maximums.size()]); while (a[Maximums[0]]>0){Maximums[0]--;} while (a[Maximums[1]]>0){Maximums[1]++;} writeLog(QString("M1 %1 M2 %2").arg(Maximums[0]).arg(Maximums[1])); ; /////////////////////////////////////!!!!!!!!!!!!!!!!!!!!!!!! for(int i=0;i<8;i++) { for(int j=0;j<8;j++) { CurrentSquare=findSquare(i,j); int AboveScale=0; int BelowScale=0; for(int k=0;k<CurrentSquare.width-1;k++) { for(int l=0;l<CurrentSquare.height-1;l++) { int current=qGray(image->pixel(CurrentSquare.x+k,CurrentSquare.y+l)); if ((current<Maximums[0]) || (current>Maximums[1])) { image->setPixel(CurrentSquare.x+k,CurrentSquare.y+l,0xffffff); if (current<Maximums[0]) BelowScale++; if (current>Maximums[1]) AboveScale++; } else { image->setPixel(CurrentSquare.x+k,CurrentSquare.y+l,0x000000); } } } if (AboveScale>BelowScale) { ChessDesk[i][j].Color=1; } else { ChessDesk[i][j].Color=0; } writeLog(QString(tr("X %1 Y %2 C %3")).arg(i+1).arg(j+1).arg(ChessDesk[i][j].Color)); if (DebugMode) { sendImage(*image); writeLog(QString(tr("Binarizing square X:%1 Y:%2.")).arg(i+1).arg(j+1)); } approximateBorder(CurrentSquare, *image); if ((MaxGrayPixel-MinGrayPixel)<128) { filterDilation(CurrentSquare, *image); filterErosion(CurrentSquare, *image); } filterErosion(CurrentSquare, *image); filterDilation(CurrentSquare, *image); filterFigure(CurrentSquare, *image); recognizePiece(CurrentSquare, *image, ChessDesk[i][j]); } } for(int i=0;i<8;i++) { for(int j=0;j<8;j++) { if (ChessDesk[i][j].Type) { int type=ChessDesk[i][j].Type; int color=ChessDesk[i][j].Color; if (type==1 && color==0) writeLog(QString("X %1 Y %2 F %3").arg(i+1).arg(j+1).arg("Black King")); if (type==1 && color==1) writeLog(QString("X %1 Y %2 F %3").arg(i+1).arg(j+1).arg("White King")); if (type==2 && color==0) writeLog(QString("X %1 Y %2 F %3").arg(i+1).arg(j+1).arg("Black Queen")); if (type==2 && color==1) writeLog(QString("X %1 Y %2 F %3").arg(i+1).arg(j+1).arg("White Queen")); if (type==3 && color==0) writeLog(QString("X %1 Y %2 F %3").arg(i+1).arg(j+1).arg("Black Pawn")); if (type==3 && color==1) writeLog(QString("X %1 Y %2 F %3").arg(i+1).arg(j+1).arg("White Pawn")); } } } ///////////////////////////////////// CheckMatePosition CurrentAttack=checkPosition(ChessDesk); delete image; image = new QImage(*source); drawRect(ChessArea,0xff0000); for(int i=0;i<8;i++) { for(int j=0;j<8;j++) { CurrentSquare=findSquare(i,j); if (ChessDesk[i][j].Type) { int type=ChessDesk[i][j].Type; int color=ChessDesk[i][j].Color; if (type==1 && color==0) //Black King drawRect(CurrentSquare,qRgb(30,89,19),5); if (type==1 && color==1) //White King drawRect(CurrentSquare,qRgb(121,11,11),5); if (type==2 && color==0) //Black Queen drawRect(CurrentSquare,qRgb(54,179,35),5); if (type==2 && color==1) //White Queen drawRect(CurrentSquare,qRgb(237,44,44),5); if (type==3 && color==0) //Black Pawn drawRect(CurrentSquare,qRgb(177,235,167),5); if (type==3 && color==1) //White Pawn drawRect(CurrentSquare,qRgb(250,192,192),5); } } } drawAttack(CurrentAttack); sendImage(*image); }
void SegmentationEventHandler::handleResult(const Mat& finalImage) { emit sendImage(ImageTypeConverter::convertMat2QImage(finalImage)); }
static void * sendImageVersion(void * cls) { DBService * dbs = getDBService(); StorageService * sts = getStorageService(); VMRebuilderService * vms = getVMRebuilderService(); SendImageArgs * sia = (SendImageArgs *)cls; ImageVersion * iv = sia->iv; int fd = sia->fd; uint32_t versions = iv->img->versions - iv->version; uint32_t blocks = iv->size / BLOCK_SIZE; uint32_t i, j; uint32_t seeks = 0; // Work with most recent version if (iv->version == iv->img->versions - 1) { sendImage(cls); return NULL; } VersionMapRebuilder * vmr = vms->newVersionMapRebuilder(iv); for (i = 0; i < versions; i++) { for (j = 0; j < min(vmr->ivs[i]->seg_cnt, SEGMENT_PREFETCH_AHEAD); j++) { Segment * seg = dbs->findSegment(&vmr->ivs[i]->segmentfps[j]); sts->prefetchSegmentStore(seg); } } Segment * s_iseg = NULL; uint32_t s_iblk = 0, s_cnt = 0; for (i = 0; i < blocks; i++) { if (i % SEG_BLOCKS == 0) { uint32_t segnr = i / SEG_BLOCKS + SEGMENT_PREFETCH_AHEAD; for (j = 0; j < versions; j++) { if (segnr < vmr->ivs[j]->seg_cnt) { Segment * seg = dbs->findSegment( &vmr->ivs[j]->segmentfps[segnr]); sts->prefetchSegmentStore(seg); } } } VersionMapEntry en = vms->getVersionMapEntry(vmr, i); if (en.ver == -1) { if (s_cnt) { SegmentStore * ss = sts->getSegmentStore(s_iseg); sts->pipeSegment(ss, fd, s_iblk, s_cnt); sts->putSegmentStore(ss); } sts->pipeZero(fd); s_cnt = 0; continue; } ImageVersion * cur_iv = vmr->ivs[en.ver - iv->version]; Segment * seg = dbs->findSegment( &cur_iv->segmentfps[en.blk / SEG_BLOCKS]); uint32_t iblk = en.blk % SEG_BLOCKS; if (s_iseg == seg && s_iblk + s_cnt == iblk) { s_cnt++; continue; } if (s_cnt) { SegmentStore * ss = sts->getSegmentStore(s_iseg); sts->pipeSegment(ss, fd, s_iblk, s_cnt); sts->putSegmentStore(ss); seeks++; } s_iseg = seg; s_iblk = iblk; s_cnt = 1; } if (s_cnt) { SegmentStore * ss = sts->getSegmentStore(s_iseg); sts->pipeSegment(ss, fd, s_iblk, s_cnt); sts->putSegmentStore(ss); seeks++; } seeks -= iv->seg_cnt; vms->destroyVersionMapRebuilder(vmr); close(sia->fd); free(sia); pthread_exit(NULL); return NULL; }
void ImageProcessor::recognizePiece(RectArea rect, QImage& img, PieceSquare &ChessDeskPiece) { std::vector<std::vector<kaverage> > vsquare (rect.width,std::vector<kaverage>( rect.height)); int average; int NumOfPixels=0; int HasPiece=0; for(int i=1;i<rect.width-1;i++) { for(int j=1; j<rect.height-1;j++) { vsquare[i][j].Gray=qGray(img.pixel(i+rect.x,j+rect.y)); if (vsquare[i][j].Gray) NumOfPixels++; if (vsquare[i][j].Gray && !HasPiece) HasPiece=1; vsquare[i][j].k=0; average+=vsquare[i][j].Gray; } } average=average/(rect.width*rect.height); if (HasPiece) { double Elongation=0; double Compaction=0; int Perimeter=0; int VolumeArea=0; for(int i=1;i<rect.width-1;i++) { for(int j=1; j<rect.height-1;j++) { if (vsquare[i][j].Gray) { VolumeArea++; if (!vsquare[i+1][j+1].Gray || !vsquare[i+1][j].Gray || !vsquare[i+1][j-1].Gray || !vsquare[i][j+1].Gray || !vsquare[i][j-1].Gray || !vsquare[i-1][j+1].Gray || !vsquare[i-1][j].Gray || !vsquare[i-1][j-1].Gray) { Perimeter++; } } } } Compaction=static_cast<double>(Perimeter*Perimeter)/VolumeArea; //writeLog(QString("Perimeter %1 \n Square %2").arg(Perimeter).arg(VolumeArea)); writeLog(QString("Compact %3").arg(Compaction)); int XCenterMass=0; int YCenterMass=0; for(int i=1;i<rect.width-1;i++) { for(int j=1; j<rect.height-1;j++) { if (vsquare[i][j].Gray) { XCenterMass+=i; YCenterMass+=j; } } } XCenterMass/=NumOfPixels; YCenterMass/=NumOfPixels; //writeLog(QString("XCenterMass %1 YCenterMass %2").arg(XCenterMass).arg(YCenterMass)); double m02=0; double m20=0; double m11=0; for(int i=1;i<rect.width-1;i++) { for(int j=1; j<rect.height-1;j++) { if (vsquare[i][j].Gray) { m02+=(YCenterMass-j)*(YCenterMass -j); m20+=(XCenterMass-i)*(XCenterMass -i); m11+=(i-XCenterMass)*(j-YCenterMass); } } } Elongation=(m20+m02+sqrt((m20-m02)*(m20-m02)+4*m11*m11))/ (m20+m02-sqrt((m20-m02)*(m20-m02)+4*m11*m11)); writeLog(QString("Elongation %1 \n").arg(Elongation)); if (Elongation>2) { ChessDeskPiece.Type=3; // Pawn } else { if (Compaction>50) { ChessDeskPiece.Type=2; //Queen } else { ChessDeskPiece.Type=1; //King } } } else { ChessDeskPiece.Type=0; } if (DebugMode) { sendImage(*image); writeLog(QString(tr("Piece recognition"))); } }
void ImageProcessor::filterFigure(RectArea rect, QImage& img) { std::vector<std::vector<kaverage> > vsquare (rect.width,std::vector<kaverage>( rect.height)); int average; for(int i=0;i<rect.width;i++) { for(int j=0; j<rect.height;j++) { vsquare[i][j].Gray=qGray(img.pixel(i+rect.x,j+rect.y)); vsquare[i][j].k=0; average+=vsquare[i][j].Gray; } } average=average/(rect.width*rect.height); int CurrentLabelNumber=0; for(int i=1;i<rect.width-1;i++) { for(int j=1; j<rect.height-1;j++) { if (vsquare[i][j].Gray) { if(!vsquare[i-1][j].k && !vsquare[i][j-1].k) { CurrentLabelNumber++; vsquare[i][j].k=CurrentLabelNumber; } else if ((!vsquare[i-1][j].k && vsquare[i][j-1].k) || (vsquare[i-1][j].k && !vsquare[i][j-1].k)) { if (vsquare[i-1][j].k) {vsquare[i][j].k=vsquare[i-1][j].k;} if (vsquare[i][j-1].k) {vsquare[i][j].k=vsquare[i][j-1].k;} } else if (vsquare[i-1][j].k && vsquare[i][j-1].k) { if (vsquare[i-1][j].k == vsquare[i][j-1].k){ vsquare[i][j].k=vsquare[i][j-1].k; } else { int tmpLabel=vsquare[i-1][j].k; vsquare[i][j].k=vsquare[i][j-1].k; for(int m=1;m<rect.width-1;m++) { for(int l=1; l<rect.height-1;l++) { if (vsquare[m][l].k==tmpLabel) { vsquare[m][l].k=vsquare[i][j-1].k; } } } } } } } } std::vector<int> GkArea(CurrentLabelNumber+1,0); for(int i=1;i<rect.width-1;i++) { for(int j=1; j<rect.height-1;j++) { if (vsquare[i][j].k!=0) GkArea[vsquare[i][j].k]++; } } int MaxK=0; int ThisK=0; for (int i=1; (static_cast<unsigned int>(i))<GkArea.size(); i++) { if (GkArea[i]>MaxK) { MaxK=GkArea[i]; ThisK=i; } } for(int i=1;i<rect.width-1;i++) { for(int j=1; j<rect.height-1;j++) { if (vsquare[i][j].k!=ThisK) {vsquare[i][j].k=0;} else if (GkArea[vsquare[i][j].k]<100) {vsquare[i][j].k=0;} } } for(int i=1;i<rect.width-1;i++) { for(int j=1; j<rect.height-1;j++) { img.setPixel(rect.x+i,rect.y+j,vsquare[i][j].k?0xffffff:0x000000 //0xffffff*vsquare[i][j].k/(CurrentLabelNumber+2) ); } } if (DebugMode) { sendImage(*image); writeLog(QString(tr("Finding compact spaces."))); } }
void ConvDistThread :: run (void) { if (!convParameters) return; QTime * fftTime = new QTime; fftTime->start(); mFile.lock (); int ndn = convParameters->getNRChannels(); int nd = FFT_Transform::pow2roundup (ndn); int nd2 = 2*ndn; CalcOpor1 * cop = new CalcOpor1 (nd); complex<double> * opor = cop->calc();//new complex<double> [nd]; int N1 = convParameters->getImpNumb(); qDebug () << __PRETTY_FUNCTION__ << N1; QFile fContData (QString ("stc4.dat")); fContData.open (QIODevice::WriteOnly); QTextStream stCont (&fContData); FFT_Transform fft;// = new FFT_Transform; emit sendData (opor, N1); //radDataWidget * wOpFFT = new radDataWidget (opor, N1); //emit sendWidget (wOpFFT, this); /* QMdiSubWindow * subWopFFT = m_mdiArea->addSubWindow (wOpFFT); wOpFFT->show (); subWopFFT->setAttribute (Qt::WA_DeleteOnClose); */ QFile contOp ("opor_after_FFT.dat"); contOp.open (QIODevice::WriteOnly); QTextStream stOp (&contOp); for (int i=0; i<N1; i++) { double re = real (opor[i])*nd; double im = imag (opor[i])*nd; stOp << re << " " << im << "i" << endl; } contOp.close (); QString fileName = convParameters->getInputFileName(); QFile fData (fileName); quint8 * st = new quint8 [nd2]; for (int i=0; i<nd2; i++) { st [i] = 0; } complex<double> * stc = new complex<double>[nd]; complex<double> * stc1 = new complex<double>[nd]; for (int i=0; i<nd; i++) { stc[i] = complex<double> (0.0, 0.0); stc1[i] = complex<double> (0.0, 0.0); } int a = 0; Q_UNUSED (a); FILE * fid5 = fopen (fileName.toAscii().constData(), "rb"); qDebug () << __PRETTY_FUNCTION__ << fileName.toAscii().constData() << fid5; if (!fData.open (fid5, QIODevice::ReadOnly | QIODevice::Unbuffered)) { mFile.unlock(); return; } QString fileConvName = convParameters->getConvFileName();//QFileDialog::getSaveFileName (this, tr("Save 1st data"), QDir::currentPath(), tr("All files (*)")); FILE * fid6 = fileConvName.isEmpty() ? 0 : fopen (fileConvName.toAscii().constData(), "w+"); int na = convParameters->getChannelsNumb (); qDebug () << __PRETTY_FUNCTION__ << (int)na; QAbstractItemModel * radModel = new QStandardItemModel (nd2, 1, 0);// (nd2, na); Q_UNUSED (radModel); int nr (0); Q_UNUSED (nr); QFile fContStData (QString ("stc.dat")); fContStData.open (QIODevice::WriteOnly); QTextStream stContSt (&fContStData); QSize imSize (nd, FFT_Transform::pow2roundup(na/50)); QImage * convImage = new QImage (imSize, QImage::Format_RGB32);//QImage::Format_Mono); if (!convImage || convImage->size().isNull()) { if (convImage) delete convImage; mFile.unlock(); return; } convImage->fill (0); double maxval = 0.0; // stc2MatrAbs = new double (na*nd); qDebug () << __PRETTY_FUNCTION__ << fftTime->elapsed (); int nThr = convParameters->getNumThreads(); fftw_init_threads (); fftw_plan_with_nthreads (nThr); for (int i0=0; i0<na; i0++) { // qDebug () << __PRETTY_FUNCTION__ << QString("Read new data"); /* ConvDistColumnThread * thrCol = new ConvDistColumnThread (convParameters, fid5, fid6, i0, 0); connect (thrCol, SIGNAL (terminated()), this, SLOT (columnTerminated()) ); connect (thrCol, SIGNAL (finished()), this, SLOT (columnFinished()) ); thrCol->start(); //while (!thrCol->isFinished()) // ; thrCol->wait(); //thrCol->deleteLater(); */ int cr = fread (st, sizeof (quint8), nd2, fid5); if (cr <= 0) return; for (int ii=0; ii< nd2; ii++) { if (i0<1) { QModelIndex wcIndex = radModel->index (nr, 0); radModel->setData (wcIndex, QString::number (st[ii]), Qt::DisplayRole); nr++; } } for (int ii=0; ii<128; ii++) st[ii] = 0.0; for (int ii=0; ii<ndn; ii++) { double re = st[2*ii+1]; double im = st[2*ii]; if (re > 128) re -= 256; if (im > 128) im -= 256; if (i0==0) stContSt << re << " " << im << endl; stc[ii] = complex<double> (re, im);//st[2*ii], st[2*ii+1]); } complex<double> * stc4 = 0;//new complex<double> [nd]; stc4 = fft (stc, nd, nd, FFTW_FORWARD, FFTW_ESTIMATE); //qDebug () << __PRETTY_FUNCTION__ << tr ("FFT of data, elapsed time %1").arg (fftTime->elapsed ()/1.0e3); for (int ii=0; ii<nd; ii++) { double re = real (stc4[ii])*nd; double im = imag (stc4[ii])*nd; stc4[ii] = complex<double> (re, im); if (i0==0) stCont << re << (im >= 0 ? "+" : " ") << im << "i" << endl; } for (int ii=0; ii<nd; ii++) { double rstc4 = real (stc4[ii])/nd; double imstc4 = imag (stc4[ii])/nd; double ropor = real (opor[ii]); double imopor = imag (opor[ii]); complex<double> res = complex<double> ((rstc4 * ropor - imstc4*imopor), (rstc4*imopor+imstc4*ropor)); stc1[ii] = res;//stc4[i]*opor[i];///(nd*nd); } delete [] stc4; complex<double> * xfft = 0;//new complex<double> [nd]; //qDebug () << __PRETTY_FUNCTION__ << QString ("Reverse fft"); xfft = fft (stc1, nd, nd, FFTW_BACKWARD, FFTW_ESTIMATE );//| FFTW_MEASURE); //delete [] xConv; double * stc2 = new double [2*nd]; //double * stc2abs = new double [nd]; for (int ii=0; ii<nd; ii++) { int ind = ii;//(ii==0 ? nd-1 : ii-1); stc2[2*ii] = real (xfft[ind])/nd;//stc3[i]); stc2[2*ii+1] = imag (xfft[ind])/nd; double vmod = sqrt (stc2[2*ii]*stc2[2*ii] + stc2[2*ii+1]*stc2[2*ii+1]); maxval = qMax (maxval, vmod); } if (fid6) { //qDebug () << __PRETTY_FUNCTION__ << QString ("Write data"); size_t h = fwrite (stc2, sizeof (double)/2, 2*nd, fid6); int ier = ferror (fid6); //qDebug () << __PRETTY_FUNCTION__ << QString ("Data were written %1 bytes, error indicator =%2 ").arg (h).arg(ier); if (h ==0 || ier) { qDebug () << __PRETTY_FUNCTION__ << tr ("Write error, code=%1").arg (ier); return; } } delete [] xfft; //delete [] stc2abs; delete [] stc2; } delete cop; if (fid6) fclose (fid6); mFile.unlock(); fid6 = fileConvName.isEmpty() ? 0 : fopen (fileConvName.toAscii().constData(), "r+"); qDebug () << __PRETTY_FUNCTION__ << maxval; if (fid6) { double * vals = new double [nd]; int * nums = new int [nd]; for (int i=0; i<nd; i++) { vals[i] = 0.0; nums[i] = 0; } for (int i0 = 0; i0 < FFT_Transform::pow2roundup(na/50); i0++) { for (int i=0; i<50; i++) { double * stc2c = new double [2*nd]; size_t h = fread (stc2c, sizeof (double)/2, 2*nd, fid6); //qDebug () << __PRETTY_FUNCTION__ << h; if (h > 0) { for (int ii=0; ii<nd; ii++) { vals [ii] += sqrt (stc2c[2*ii]*stc2c[2*ii] + stc2c[2*ii+1]*stc2c[2*ii+1]); nums[ii]++; } } delete [] stc2c; } for (int ii=0; ii<nd; ii++) { double vmod = vals[ii]/nums[ii];//sqrt (stc2c[2*ii]*stc2c[2*ii] + stc2c[2*ii+1]*stc2c[2*ii+1]); double gray = (vmod/maxval)*convParameters->getNCalibration(); //vals [(i0+1)%50+ii] = gray; //if ((i0+1)/50*50 == i0+1) //{ // double gray_ave (0.0); // for (int iii=0; iii<50; iii++) // gray_ave += vals [iii]; uint val = (uint)(256*(gray)); QRgb v = qRgb (val, val, val); convImage->setPixel (ii, i0, v);//qRgb(val, val, val)); //} } } delete [] vals; } fftw_cleanup_threads (); //delete [] vals; qDebug () << __PRETTY_FUNCTION__ << QString ("Data were read and processed"); fContData.close(); // double * stc2abs = new double [nd]; qDebug () << __PRETTY_FUNCTION__ << convImage->size () << imSize; QString fileImageName = QString ("rgg.png"); convImage->save (fileImageName, "PNG"); //rggImageWidget * imW = new rggImageWidget; //imW->setImage (*convImage); //emit sendWidget (imW, this); emit sendImage (convImage); int msecs = fftTime->elapsed (); emit sendTime (msecs); delete fftTime; delete [] stc1; delete [] st; // exec(); }
void TcpController::sendImagePixel(Imagem image, int qtd) { sendImageNotProcess(image.frameNotProcess); sendImage(image.frame,qtd,PORT_IMAGE_PIXEL); }
gNodeComponentWidget::gNodeComponentWidget(sJarvisNodeComponent* comp,QWidget *parent) : QGroupBox(parent), m_component(comp), ui(new Ui::gNodeComponentWidget) { ui->setupUi(this); this->setTitle(m_component->getId()); QList<jarvisActions> actions = m_component->getActions(); for(int i = 0 ; i < actions.count() ; i++) { jarvisActions action = actions[i]; //qDebug() << QString::number(int(action)); QToolButton* b = new QToolButton(ui->actionsBox); QGridLayout* l = (QGridLayout*)ui->actionsBox->layout(); if (action == A_DIMM){ b->deleteLater(); QSlider* w = new QSlider(this); w->setMaximum(100); w->setValue(50); l->addWidget(w,l->count()/2,l->count()%2); connect(w,SIGNAL(valueChanged(int)),m_component,SLOT(dimm(int))); }else if(action == A_SET_COLOR){ connect(b,SIGNAL(clicked()),this,SLOT(selectComponentColor())); b->setText(m_component->actionName((m_component->getActions()[i]))); l->addWidget(b,l->count()/2,l->count()%2); }else if(action == A_SET_LEDS){ connect(b,SIGNAL(clicked()),this,SLOT(sendImage())); b->setText(m_component->actionName((m_component->getActions()[i]))); l->addWidget(b,l->count()/2,l->count()%2); }else if(action == A_DISPLAY){ connect(b,SIGNAL(clicked()),this,SLOT(sendImage())); b->setText(m_component->actionName((m_component->getActions()[i]))); l->addWidget(b,l->count()/2,l->count()%2); }else if(action == A_PLAYRTTTL){ connect(b,SIGNAL(clicked()),this,SLOT(openRtttlPlayer())); b->setText(m_component->actionName((m_component->getActions()[i]))); l->addWidget(b,l->count()/2,l->count()%2); }else{ QString slotName = m_component->slotName(m_component->getActions()[i]); b->setText(m_component->actionName((m_component->getActions()[i]))); l->addWidget(b,l->count()/2,l->count()%2); connect(b,SIGNAL(clicked()),m_component,slotName.toStdString().c_str()); } } QList<jarvisEvents> events = m_component->getCapableEvents(); for(int i = 0 ; i < events.count() ; i++) { gBlinkWidget* w = new gBlinkWidget(ui->eventsBox); QLabel* label = new QLabel(ui->eventsBox); QGridLayout* l = (QGridLayout*)ui->eventsBox->layout(); l->addWidget(label,i,0); l->addWidget(w,i,1); w->setMaximumHeight(50); if(events[i] == E_RAW_READ) { connect(m_component,SIGNAL(rawRead()),w,SLOT(blink())); connect(m_component,SIGNAL(rawRead(QStringList)),w,SLOT(displayRead(QStringList))); label->setText(m_component->eventName((m_component->getCapableEvents()[i]))); }else if(events[i] == E_DATA_READ) { connect(m_component,SIGNAL(dataRead()),w,SLOT(blink())); connect(m_component,SIGNAL(dataRead(QStringList)),w,SLOT(displayRead(QStringList))); label->setText(m_component->eventName((m_component->getCapableEvents()[i]))); }else { QString signalName = m_component->signalName(m_component->getCapableEvents()[i]); label->setText(m_component->eventName((m_component->getCapableEvents()[i]))); connect(m_component,signalName.toStdString().c_str(),w,SLOT(blink())); } //w->setMinimumSize(32,32); //w->setMaximumSize(32,32); } }