2017-12-19 8 views
0

이 코드에 문제가 있습니다. 왜 이미지가 처음 60 픽셀 (0에서 59까지)으로 바뀌는 지 모르겠지만, 다른 모든 것은 아닙니다 (60에서 360까지의 루프에서 j). 난 그냥 테스트, 여전히 다른 경우에 와서,하지만 내 선택 색상이 픽셀을 대체하지 않았다 내 나쁜 영어이미지의 모든 픽셀을 선택한 색상으로 바꿀 수 없습니다.

에 대한 result

죄송합니다 : 여기

for (int i = 0; i < 40; i++) 
    { 
     for (int j = 0; j < 360; j++) 
     { 
      if (j > 300) 
      { 
       color_bar.at<Vec3b>(i, j)[2] = 0; 
       color_bar.at<Vec3b>(i, j)[1] = 255; 
       color_bar.at<Vec3b>(i, j)[0] = 0; 
      } 
      else if (j > 240) 
      { 
       color_bar.at<Vec3b>(i, j)[2] = 0; 
       color_bar.at<Vec3b>(i, j)[1] = 0; 
       color_bar.at<Vec3b>(i, j)[0] = 255; 
      } 
      else if (j > 180) 
      { 
       color_bar.at<Vec3b>(i, j)[2] = 0; 
       color_bar.at<Vec3b>(i, j)[1] = 255; 
       color_bar.at<Vec3b>(i, j)[0] = 0; 
      } 
      else if (j > 120) 
      { 
       putText(color_bar, "120", Point2f(2, 30), FONT_HERSHEY_PLAIN, 2, Scalar(0, 0, 255, 255)); 
       color_bar.at<Vec3b>(i, j)[2] = 255; 
       color_bar.at<Vec3b>(i, j)[1] = 0; 
       color_bar.at<Vec3b>(i, j)[0] = 0; 
      } 
      else if (j > 60) 
      { 
       color_bar.at<Vec3b>(i, j)[2] = 0; 
       color_bar.at<Vec3b>(i, j)[1] = 255; 
       color_bar.at<Vec3b>(i, j)[0] = 0; 
      } 
      else 
      { 
       color_bar.at<Vec3b>(i, j)[2] = 0; 
       color_bar.at<Vec3b>(i, j)[1] = 0; 
       color_bar.at<Vec3b>(i, j)[0] = 255; 
      } 
     } 
    } 

내 결과 이미지

답변

1

이미지를 연 후, 난 당신이 요소에 액세스해야하므로

color_bar.at<Vec3b>(j,i)[..] = value; 

를 사용 == 40 행 == 360 COLS와 사진을 볼 j - 행, i - col입니다.