2017년 7월 11일 화요일

cvLoadImage, cvarrToMat, cvtColor

std::string filename의 image를 load하여 간단한 변환.

     IplImage* img = cvLoadImage(fileName.c_str());

     cv::Mat src = cv::cvarrToMat(img).clone();
     cv::Mat src_gray;

     cvReleaseImage(&img);

     if (src.channels() == 3)
     {
           cv::cvtColor(src, src_gray, CV_BGR2GRAY);
     }
     else if (src.channels() == 4)
     {
           cv::cvtColor(src, src_gray, CV_BGRA2GRAY);
     }
     else if (src.channels() == 1)
     {
           src_gray = src.clone();
     }

     // if (!findContours(src_gray, useFilter)) return false;

     cv::Mat sum_image;
     cv::cvtColor(src_gray, sum_image, CV_GRAY2RGB);

     for (int i = 0; i < m_candidatesTargets.size(); i++)
     {
           Target& t = m_candidatesTargets[i];
           if (m_candidatesTargets[i].type == Target::UNKNOWN)
           {
                ellipse(sum_image, t.ellipse, cv::Scalar(0, 255, 0), 1, 8);
           }
           else
           {
                ellipse(sum_image, t.ellipse, cv::Scalar(0, 0, 255), 1, 8);
           }

     }

     cv::namedWindow("sum_image", CV_WND_PROP_ASPECTRATIO);
     cv::imshow("sum_image", sum_image);
     cv::waitKey();

댓글 없음:

댓글 쓰기