「OpenCV에 의한 화상 처리 입문」연습 문제 6.2 도중까지
3의 의사 컬러 처리를 모른다. .
연습 문제 6.2
그레이스케일 화상으로부터, 손 계산으로 도수 분포를 구하는 방법을 모르기 때문에, 모두 프로그램을 사용했다.
도수 분포를 구한다 = 도수 분포표를 그려라, 라고 해석.
프로그램(공통 처리(p.51)는 생략)
Mat img_hst = Mat::zeros(100, 256, CV_8UC1);
Mat img_sum = Mat::zeros(100, 256, CV_8UC1);
const int hdims[] = { 256 };
const float hranges[] = { 0, 256 };
const float* ranges[] = { hranges };
int channels[] = { 0 };
int sum = 0;
// 度数分布を求める
Mat hist;
calcHist(&img_src, 1,channels, Mat(), hist, 1, hdims, ranges);
// 度数の最大・最小値を取得
double hist_min, hist_max;
minMaxLoc(hist, &hist_min, &hist_max);
for (int i = 0; i <= 255;i++)
{
// 累積度数の計算
int v = saturate_cast<int>(hist.at<float>(i));
sum = sum + v;
// 度数分布の表示
line(img_sum, Point(i, img_hst.rows), Point(i, img_hst.rows - img_hst.rows * (sum * 0.0000005)), Scalar(255, 255, 255));
// 累積度数グラフの表示
line(img_hst, Point(i, img_hst.rows), Point(i, img_hst.rows - img_hst.rows * (v / hist_max)), Scalar(255, 255, 255));
}
// 累積度数の表示
cout << sum << endl;
입력 이미지
빈도 분포
calcHist()를 사용하여 빈도 분포를 찾습니다.
누적 도수
1920000
각 화소마다의 도수를 sum에 격납해 누적.
누적 빈도 그래프
도수 분포의 표시로 사용한 묘화 함수 line()를 사용. 분해능으로서 *0.0000005 하고 있지만, 표시를 반복해 딱 좋은 것으로 했다.
Reference
이 문제에 관하여(「OpenCV에 의한 화상 처리 입문」연습 문제 6.2 도중까지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ikenohotori/items/57fbe488a507271335d4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)