opencv
(opencv) 이미지위의 직선상의 픽셀위치 구하기
꼰대코더
2025. 2. 8. 23:20
아래 이미지의 빨간 라인의 픽셀의 값들을 알아 보고자 하자.
출발 포인트를 (200, 100), 도착 포인트를 (250, 180) 이라 할 때
방법 1) 마스크 이미지를 이용
cv::Mat image = cv::imread("image"); cv::Point A(200,100); cv::Point B(250,180); // 바탕이 검정이 마스크 이미지를 생성 // 또는 cv::Mat mask(image.size(), uchar(0), CV_8UC1); cv::Mat1b mask(image.size(), uchar(0)); // 출발점과 끝점을 잇는 하얀선을 그림 cv::line(mask, A, B, cv::Scalar(255)); std::vector<cv::Point> points1; cv::findNonZero(mask, points1); for(cv::Point& pt : points1) { cv::Vec3b pixel = image.at < cv::Vec3b> (pt.y, pt.x); } |
방법 2) LineIterator 를 이용
cv::LineIterator lit(image, A, B); std::vector<cv::Point> points1; for (int i = 0; i < lit.count; ++i, ++lit) { points1.push_back(lit.pos()); } for(cv::Point& pt : points1) { cv::Vec3b pixel = image.at < cv::Vec3b> (pt.y, pt.x); } |