opencv
画像コンテンツの変更
サーチ…
全体画像を単色に設定する
いくつかのサイズの空でない空のcv::Mat imgが与えられた場合、いくつかの方法でそれを単色に塗りつぶすことができます:
img = cv::Scalar(blueVal,greenVal,redVal);
より一般的な、マスクサポート、 cv::Mat::setTo() :
img.setTo(cv::Scalar(blueVal,greenVal,redVal));
IplImage* imgで古いOpenCV C APIを使用している場合:
つかいます:
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