###前提・実現したいこと
opencv内にあるcv::approxPolyDPを使いたいのですが引数にmatを用いる必要があり困っています。いれようと思ってる構造体がcvSeqで作ってしまってる為変換の方法を教えてください。
###該当のソースコード
C++
1#import "MonochromeFilter.h" 2#import "OpenCVUtil.h" 3 4@implementation MonochromeFilter 5 6+ (UIImage *)doFilter:(UIImage *)image 7{ 8 // CGImageからIplImageを作成 9 IplImage *srcImage = [OpenCVUtil IplImageFromUIImage:image]; 10 IplImage *grayScaleImage = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 1); 11 IplImage *dstImage = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 3); 12 IplImage *bin_image = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 1); //cv::Mat aaa; 13 CvSeq *contours; 14 std::vector< cv::Point > approx; 15 CvMemStorage *storage = cvCreateMemStorage (0); 16 // グレースケール画像に変換 17 cvCvtColor(srcImage, grayScaleImage, CV_BGR2GRAY); 18 19 //2値化 20 cvThreshold(grayScaleImage,bin_image,160,255,CV_THRESH_BINARY); 21 //std::vector< std::vector< cv::Point > > contours; 22 // cv::Mat(aaa) = bin_image; 23 24 //輪郭検出 25 cvFindContours (bin_image, storage, &contours, sizeof (CvContour), CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE); 26 27 28 for ( int i = 0; i < contours->total; i++){ 29 CvPoint *point = CV_GET_SEQ_ELEM (CvPoint, contours, i); 30 } 31 double Area = fabs(cvContourArea(contours, CV_WHOLE_SEQ)); 32 cv::approxPolyDP(contours, approx, 50.0, true); 33 // CGImage用にBGRに変換 34 cvCvtColor(grayScaleImage, dstImage, CV_GRAY2BGR); 35 36 // IplImageからCGImageを作成 37 UIImage *effectedImage = [OpenCVUtil UIImageFromIplImage:dstImage]; 38 39 cvReleaseImage(&srcImage); 40 cvReleaseImage(&grayScaleImage); 41 cvReleaseImage(&dstImage); 42 43 return effectedImage; 44} 45 46@end
###補足情報(言語/FW/ツール等のバージョンなど)
opencv2.4.9
xcode7.3
Objective-Cのコードは ```objectivec です。