수색…


전체 이미지를 단색으로 설정

어떤 크기의 비어 있지 않은 cv::Mat img 가 주어지면 여러 가지 방법으로 단색으로 채울 수 있습니다 :

img = cv::Scalar(blueVal,greenVal,redVal);

또는보다 일반적인 마스크 지원, cv::Mat::setTo() :

img.setTo(cv::Scalar(blueVal,greenVal,redVal));

이전 OpenCV C API를 IplImage* img 와 함께 사용하는 경우 :

용도:

cvSet(img, CV_RGB(redVal,greenVal,blueVal));

이미지의 픽셀 수정에 의한 픽셀

OpenCV에서 이미지는 RGB / BGR, HSV, 회색 음영, 흑백 등이 될 수 있습니다. 이미지를 다루기 전에 데이터 유형을 아는 것이 중요합니다.

이미지 데이터 타입은 주로 CV_8UC3 (3 채널의 uchar 행렬)과 CV_8U (1 채널의 uchar 행렬)이지만 CV_32FC3, CV_64F와 같은 다른 유형으로의 변환도 가능합니다. ( 데이터 유형 참조)

이미지는 imread 함수가 읽는 RGB 이미지입니다.

Mat rgb = imread('path/to/rgb/image', CV_LOAD_IMAGE_COLOR);
//to set RED pixel value of (i,j)th to X,
rgb.at<Vec3b>(i,j)[0] = X;

유사하게, 이미지가 그레이 스케일링되면,

gray.at<uchar>(i,j) = X;

OpenCV에서 흑백 이미지는 값이 0과 255 인 CV_8U 유형으로 저장됩니다. 따라서 BW 이미지 변경은 회색 이미지와 동일합니다.

OpenCV에서 이미지 색상 수정 - kmeans (). 이미지의 모든 픽셀을 스캔하고 픽셀 값을 일반 색상으로 바꿉니다.

#include opencv2/opencv.hpp> #include vector> using namespace std; using namespace cv; int main() { Mat3b img = imread("test.jpg"); z }
imshow("Original", img);

// Cluster

int K = 8;
int n = img.rows * img.cols;
Mat data = img.reshape(1, n);
data.convertTo(data, CV_32F);

Mat labels;
Mat1f colors;
kmeans(data, K, labels, cv::TermCriteria(), 1, cv::KMEANS_PP_CENTERS, colors);

for (int i = 0; i < n; ++i)
{
    data.at<float>(i, 0) = colors(labels.at<int>(i), 0);
    data.at<float>(i, 1) = colors(labels.at<int>(i), 1);
    data.at<float>(i, 2) = colors(labels.at<int>(i), 2);
}

Mat reduced = data.reshape(3, img.rows);
reduced.convertTo(reduced, CV_8U);



imshow("Reduced", reduced);
waitKey(0);

return 0;

#include opencv2/opencv.hpp> #include vector> using namespace std; using namespace cv; int main() { Mat3b img = imread("test.jpg"); z }



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow