본문 바로가기
opencv

(opencv) 이미지위의 직선상의 픽셀위치 구하기

by 꼰대코더 2025. 2. 8.

아래 이미지의 빨간 라인의 픽셀의 값들을 알아 보고자 하자.

 

출발 포인트를 (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);
}

'opencv' 카테고리의 다른 글

C# 와 C++/CLI Dll 사이의 이미지 전달  (0) 2025.02.10
(opencv) pixel access time  (1) 2025.02.08
contour / labelling  (0) 2023.12.07
공백 메우기  (2) 2023.12.02
b/w 이미지의 칼럼(수직방향)별 검정(=0)픽셀수 카운트  (0) 2023.12.02