게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
Open CV에 관해서 질문좀 드릴게요.
게시물ID : programmer_5247짧은주소 복사하기
작성자 : 김랜덤
추천 : 0
조회수 : 1368회
댓글수 : 1개
등록시간 : 2014/09/01 20:41:03
옵션
  • 베스트금지
Open CV에 보면 Iplimage 형식과 Mat 형식이 있는데
 
제가 소스코드를 받은게 Mat 형식으로 되어 있는데 이 Mat 형식을 Iplimage 형식으로 바꾸고 싶어서 그러는데요
 
인터넷을 찾아보니 mat을 Iplimage로 바꾸는 건 단순히 mat을 Iplimage에 = 연산을 하면 된다고 하구 반대로 Iplimage를 mat형식으로 바꾸는건 Mat(Iplimage)형식으로 하면 자동변환해서 반환해 준다는데 무슨 뜻인지 자세히 모르겠습니다 ㅠ
 
제가 바꾸고자 하는 소스가
 
//카메라로 부터 영상을 수신 한다
int DRC_GetImage()
{
 int Sumlen =0; // 수신 누적 길이 관리용
 gCAM.TotalLen = 1000000;//카메라가 보내는 데이터의 길이를 알수는 없으나...일단 충분히 큰수로...
 
 while(Sumlen<gCAM.TotalLen){
  int TempLen = recv(hSocket,(char *)&mbuff[Sumlen], gCAM.TotalLen-Sumlen, 0 );
  
  //무언가 수신햇다면 진입
  if(TempLen>0){
   //printf(" _RX:%5d ",TempLen);
   //처음 수신햇다면 진입
   if(Sumlen==0)
    {
    if(mbuff[0]!=0x55||mbuff[1]!=0x33||mbuff[2]!=0xAA){
     printf("\r\nNot MATCH HEADER  0x%02X 0x%02X 0x%02X \r\n",mbuff[0],mbuff[1],mbuff[2]);
     
     break;
     }
    memcpy((BYTE *)&gCAM, mbuff,  sizeof(CAM_TO_PC));
     
    //printf("good head...%d, TotalLen=%d\n",TempLen, CAM_TO_PC.TotalLen);
    }
   Sumlen += TempLen;
   }
  
  }
 //영상을 모두 수신하면 이곳으로 ...
 u8 *p = &mbuff[sizeof(CAM_TO_PC)];
 if(p[0]==0xFF && p[1]==0xD8  ){
  return 1;
  }
 else{
  printf("ERROR JPEG HEADER\n");
  return 0 ;
  }
 
}
 
int _tmain(int argc, _TCHAR* argv[])
{
 if(DRC_InitSocket()==0) //관련 변수 초기화 및 카메라로 소켓 연결
  return 0;
 cvNamedWindow( "display",1); // 영상을 출력할 윈도우 생성
 while(1)
 { 
  DRC_RequestImage();   //카메라에게 영상을 요청한다
  int ret = DRC_GetImage(); //카메라로 부터 영상을 수신 한다
  if(ret == 0){
   printf("Wrong Image\n");
   continue;
   }
  
  CvMat *buf = cvCreateMat(1, IMG_W*IMG_H*2, CV_8UC1 );
  memcpy((u8 *)(buf->data.ptr), &mbuff[sizeof(CAM_TO_PC)], gCAM.iJpegLen);  // 수신한 영상을 복사한다   
  IplImage *img = cvDecodeImage(buf, 1);    // 압축된 영상이므로 압축을 풀어준다
  
  // TODO:  여기서 필요한 영상처리를 수행한다.(수신한 img영상)
  
  cvShowImage( "display", img);   // 영상을 화면에 출력함       
  int c = cvWaitKey(1);   // 키보드 입력과 동시에 OpenCV에서 영상을 화면에 출력할 시간여유를 주어야함.
 
이 소스코드인데 허...엉 ㅠㅠ 어떤식으로 고쳐야 하는지 잘 모르겠네요. 혹시 아시는분은 좀 도와주세요
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호