IplImage* Saliency::Get(const IplImage* imgIn) { if (imgIn != NULL) { IplImage* tt = cvCloneImage(imgIn); Mat sal(tt); Mat img3f(tt); img3f.convertTo(img3f, CV_32FC3, 1.0/255);//图片转换,可能是0-255之间转换到0-1之间,归一化 sal = GetRC(img3f); sal.convertTo(sal,CV_32FC3,255); IplImage qImg(sal); IplImage * result = cvCreateImage(cvGetSize(imgIn),8,1); for (int r=0;r<imgIn->height;r++) { for (int c=0;c<imgIn->width;c++) { CvScalar col; col.val[0] = cvGetReal2D(&qImg,r,c); cvSet2D(result,r,c,col); } } return result; } return NULL; }
IplImage* Saliency::Get(const string imgNameW) { IplImage* tt1 = cvLoadImage(imgNameW.c_str()); IplImage* tt2 = cvLoadImage(imgNameW.c_str()); Mat sal(tt1); Mat img3f(tt2); //Mat sal = cvarrToMat(tt1); //Mat img3f = cvarrToMat(tt2); //Mat img3f //Mat sal, img3f = imread(imgNameW); img3f.convertTo(img3f, CV_32FC3, 1.0/255);//图片转换,可能是0-255之间转换到0-1之间,归一化 sal = GetRC(img3f); /*string str = "D:\\rc.png"; imwrite(str.c_str(), sal*255); IplImage* result = cvLoadImage("D:\\rc.png",0);*/ IplImage* result; CvSize size; size.width = sal.cols; size.height = sal.rows; result = cvCreateImage(size,8,1); for(int i=0;i<result->height;i++) { for(int j=0;j<result->width;j++) { CvScalar col; col.val[0] = sal.at<float>(i,j)*255.0f; cvSet2D(result,i,j,col); } } return result; }
Mat CmSaliencyRC::GetFT(CMat &img3f) { CV_Assert(img3f.data != NULL && img3f.type() == CV_32FC3); Mat sal(img3f.size(), CV_32F), tImg; GaussianBlur(img3f, tImg, Size(3, 3), 0); cvtColor(tImg, tImg, CV_BGR2Lab); Scalar colorM = mean(tImg); for (int r = 0; r < tImg.rows; r++) { float *s = sal.ptr<float>(r); float *lab = tImg.ptr<float>(r); for (int c = 0; c < tImg.cols; c++, lab += 3) s[c] = (float)(sqr(colorM[0] - lab[0]) + sqr(colorM[1] - lab[1]) + sqr(colorM[2] - lab[2])); } normalize(sal, sal, 0, 1, NORM_MINMAX); return sal; }
void ZGui::verEliminados() { QFile salida("/mmc/mmca1/zCleanerList.txt"); QTextStream sal(&salida); salida.open(IO_WriteOnly | IO_Translate); QString aux=""; for(int i=0;i<eliminados.count();i++) // aux+=aux + eliminados[i] + '\n'; sal << eliminados[i] << endl; if(infos==NULL) { infos = new ZNoticeDlg(ZNoticeDlg::Information, 3000, QString("OK"), QString("List save in /mmc/mmca1"), this, "z", true, 0); infos->show(); } infos=NULL; salida.close();
void * clientHandler(void * arg) { threadStruct *inArg = (threadStruct *) arg; int sockfd = inArg->sockfd; free(inArg); char *msg = malloc(sizeof(char)*CMD_MAX_SIZE); *msg = '\0'; msgHeader header; User user; // Agregar usuario readBytes(sockfd, (void *) &header,sizeof(header)); readBytes(sockfd, (void *) msg, header.msgSize); cleanString(msg); user.sockfd = sockfd; strncpy(user.name,msg,NAMES_SIZE); *(user.name + NAMES_SIZE -1) = '\0'; list_append(&Users,(void *) &user); // Agregar a la sala default #! while (1) { // Leer un mensaje del cliente readBytes(sockfd, (void *) &header,sizeof(header)); readBytes(sockfd, (void *) msg, header.msgSize); cleanString(msg); switch (header.code) { case MSG_CODE_SHUT: break; // #! NOT DONE case MSG_CODE_SAL: sal(sockfd); break; case MSG_CODE_USU: usu(sockfd); break; case MSG_CODE_MEN: men(sockfd,msg); break; case MSG_CODE_SUS: sus(sockfd,msg); break; case MSG_CODE_DES: des(sockfd); break; case MSG_CODE_CRE: cre(sockfd,msg); break; case MSG_CODE_ELI: // eli() #! break; case MSG_CODE_FUE: fue(sockfd); free(msg); pthread_exit(NULL); break; } *msg = '\0'; } return NULL; }
void *connection_handler(void *td) { int sock = ((Thread_data *) td)->client_sock; list subscribed_rooms = ((Thread_data *) td)->subscribed_rooms; char msg[MAX_PACK_SIZE]; memset(msg, 0, MAX_PACK_SIZE); user_data *user = wait_username(rooms, sock); user->subscribed_rooms = subscribed_rooms; add(connected_users, user); add(subscribed_rooms, rooms->first); int read_size; while ((read_size = recv(sock, msg, MAX_PACK_SIZE, 0)) > 0) { pthread_mutex_lock(&mutex); if (read_size < 3) { } else if ((strlen(msg) >= 6) && (msg[3] == ' ') && (msg[0] == 's') && (msg[1] == 'u') && (msg[2] == 's')) { memmove(msg, msg+4, 252); msg[strlen(msg)-1] = '\0'; //replace new line sus(msg, user); } else if ((strlen(msg) == 4) && (msg[0] == 's') && (msg[1] == 'a') && (msg[2] == 'l')) { sal(sock); } else if ((strlen(msg) >= 6) && //because of new line (msg[3] == ' ') && (msg[0] == 'm') && (msg[1] == 'e') && (msg[2] == 'n')) { memmove(msg, msg+4, 252); msg[strlen(msg)-1] = '\0'; //replace new line men(user, subscribed_rooms, msg); } else if ((strlen(msg) == 4) && (msg[0] == 'u') && (msg[1] == 's') && (msg[2] == 'u')) { usu(sock); } else if ((strlen(msg) == 4) && (msg[0] == 'd') && (msg[1] == 'e') && (msg[2] == 's')) { des(subscribed_rooms, user); } else if ((strlen(msg) >= 6) && (msg[3] == ' ') && (msg[0] == 'c') && (msg[1] == 'r') && (msg[2] == 'e')) { memmove(msg, msg+4, 252); msg[strlen(msg)-1] = '\0'; //replace new line cre(sock, msg); } else if ((strlen(msg) >= 6) && (msg[3] == ' ') && (msg[0] == 'e') && (msg[1] == 'l') && (msg[2] == 'i')) { memmove(msg, msg+4, 252); msg[strlen(msg)-1] = '\0'; //replace new line eli(msg, sock, user); } else if ((strlen(msg) == 4) && (msg[0] == 'f') && (msg[1] == 'u') && (msg[2] == 'e')) { fue(subscribed_rooms, user); } else if ((strlen(msg) == 4) && (msg[0] == 'h') && (msg[1] == 'l') && (msg[2] == 'p')) { memset(msg, 0, MAX_PACK_SIZE); strcat(msg, "-----------\n"); strcat(msg, "The valids commands formats are:\n"); strcat(msg, "sus <room name>\n"); strcat(msg, "cre <room name>\n"); strcat(msg, "eli <room name>\n"); strcat(msg, "sal\n"); strcat(msg, "usu\n"); strcat(msg, "des\n"); strcat(msg, "fue\n"); strcat(msg, "-----------"); write(sock, msg, MAX_PACK_SIZE); } else { memset(msg, 0, MAX_PACK_SIZE); strcat(msg, "Unrecognized option."); strcat(msg, " Try `hlp' for more information."); write(sock, msg, MAX_PACK_SIZE); } memset(msg, 0, MAX_PACK_SIZE); pthread_mutex_unlock(&mutex); } }
main(){ sal(); }