2016-10-11 5 views
0

次の問題があります。私は水平フリップをしようとしている、私のコードはコンパイルしているが、その後、私は実行時エラーがあります。私は下に私のコードを掲示し、間違いが発生したところでmat.inl.hppヘッダの一部を掲示します。opencvライブラリの横方向のフリップ

int HorizontalFlip(Mat img) 
{ 
Mat img4 = img.clone(); 
for (int i = 0; i < img4.rows; i++) 
{ 
    for (int j = 0; j < ceil(img4.cols/2); j++) 
    { 
     Vec3b &intensity = img4.at<Vec3b>(i, j); 
     Vec3b &intensity2 = img4.at<Vec3b>(i, img4.cols); 
     Vec3b bufor; 
     int k = ceil(img4.cols/2); 
     for (int channel = 0; channel < img4.channels(); channel++) 
     { 
      do 
      { 
       bufor = intensity; 
       intensity = intensity2; 
       intensity2 = bufor; 
      } while (ceil(img4.cols/2) < k); 
     } 
    } 
} 
namedWindow("Horizontal Flip", WINDOW_AUTOSIZE); 
imshow("Horizontal Flip", img4); 
return 0; 
} 


CV_DbgAssert((unsigned)(i1 * DataType<_Tp>::channels) < (unsigned)(size.p[1] * channels())); 

私の問題解決に費やしてくれてありがとうございました。

+0

を試してみてください(InputArray%20src、%20OutputArray%20dst、%20int%20flipCode))をopencv – PSchn

+0

に入れておきますが、opencvが提供する画像処理に接続されていない関数を使わなければなりません。 – Linnot

+1

この重要な情報を答えに加えてください! – PSchn

答えて

1

は、呼び出された関数[ `フリップ()`](http://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#void%20flipがすでに存在し

Mat img4 = img.clone(); 
for (int i = 0; i < img4.rows; i++) 
{ 
    for (int j = 0; j < ceil(img4.cols); j++) 
    { 
     img4.at <cv::Vec3b (i,j) = img.at <cv::Vec3b (i, img.cols-1-j); 
    } 
} 
if (img4.empty()) return 1; 
cv::imshow ("flipped", img4); 
cv::waitKey (0); 
+0

ご協力いただきありがとうございます。あなたのソリューションは私の問題を解決しました。 – Linnot

関連する問題