[C++][OpenCV] 픽셀 값 접근, 읽기, 쓰기

παντοκράτωρ·2021년 7월 26일

OpenCV

목록 보기
4/5

픽셀 값 접근 (at, ptr, data)

(100, 100)에 접근

소스 코드

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main() {

	// 이미지 입력
	Mat src = imread("Lenna.png");

	// 픽셀의 색깔 데이터 가져오기 (at)
	Vec3b color_1 = src.at<Vec3b>(Point(100, 100));

	for (int i = 0; i < 3; i++) {
		cout << int(color_1.val[i]) << " ";
	}
	cout << endl;

	// 픽셀의 색깔 데이터 가져오기 (ptr)
	uchar* color_2 = src.ptr<uchar>(100);

	for (int i = 0; i < 3; i++) {
		cout << int(color_2[100 * 3 + i]) << " ";
	}
	cout << endl;

	// 픽셀의 색깔 데이터 가져오기 (data)
	uchar* color_3 = src.data;

	for (int i = 0; i < 3; i++) {
		cout << int(color_3[100 * 3 * src.cols + 100 * 3 + i]) << " ";
	}
	cout << endl;

	return 0;
}

픽셀 값 읽기와 쓰기 (at)

소스 코드

#include <opencv2/opencv.hpp>

using namespace cv;

int main() {

	// 이미지 입력
	Mat src = imread("Lenna.png");

	// 픽셀의 색깔 데이터 가져오기
	Vec3b scalar = src.at<Vec3b>(Point(100, 100));

	// 픽셀의 색깔 데이터 변경하기 
	for (int y = 95; y < 105; y++) {
		for (int x = 95; x < 105; x++) {
			src.at<Vec3b>(Point(y, x)) = Vec3b(255, 0, 0);
		}
	}

	// 이미지 출력
	imshow("Lenna", src);

	// 키 입력을 받을 때까지 유지
	waitKey();

	return 0;
}

실행

0개의 댓글