画像処理操作OpenCVのマット

1、画像がロードされ、グレースケール、表示および保存

cv::Mat img = cv::imread("01.jpg");
    
cv::Mat imageGray;
cv::cvtColor(image, imageGray, CV_RGB2GRAY);//灰度转换  
cv::waitKey();
 
cv::imwrite("save.jpg", img);

平均値を求める2、画像の幅と高さ、トンネルモード、

cv::Mat img = cv::imread("01.jpg");
 
int width = img.cols;
int height = img.rows;
int channel_model = img.channels();
    
cv::Scalar tempVal = cv::mean(img);// CvScalar就是一个可以用来存放4个double数值的数组;
//一般用来存放像素值,最多可以存放4个通道的。
//存储RGB模式彩图时,采用的通道顺序是BGR.
float mean_B = tempVal.val[0];
float mean_G = tempVal.val[1];
float mean_R = tempVal.val[2];

3、指定サイズ、指定されたチャンネルの画像空間のタイプを作成します

cv::Mat img = cv::imread("01.jpg");
    
cv::Mat img_new1(300, 500, CV_8UC3);  //高300,宽500
cv::Mat img_new2(img.size(), CV_8UC1);

図4に示すように、画像の画素にアクセスし、操作します

int point_height = 50;
int point_width = 100;
    
cv::Mat img = cv::imread("01.jpg");
    
img.at<cv::Vec3b>(point_height, point_width)[0] = 255;
int point_value_B = img.at<cv::Vec3b>(point_height, point_width)[0];
 
cv::Mat img_gray;
cv::cvtColor(img, img_gray, cv::COLOR_BGR2GRAY);
    
int point_value_gray = img_gray.at<uchar>(point_height, point_width);
    
img_gray.convertTo(img_gray, CV_32F);  //转为float类型
float point_value_gray_f = img_gray.at<float>(point_height, point_width);

図5に示すように、画像チャネル分離と合併

cv::Mat img = cv::imread("01.jpg");
    
std::vector<cv::Mat> rgb_images;
cv::split(img, rgb_images);
    
cv::Mat B = rgb_images[0];
cv::Mat G = rgb_images[1] ;
cv::Mat R = rgb_images[2];
 
cv::Mat merged_img;
cv::merge(rgb_images, merged_img);

6、出力文字の画像

cv::Mat img = cv::imread("01.jpg");
cv::putText(img, "Text", cv::Point(50, 100), 0, 2, cv::Scalar(0, 0, 255));
cv::imshow("img_show", img);

図7に示すように、画像スケーリング

 

 

公開された167元の記事 ウォン称賛19 ビュー20000 +

おすすめ

転載: blog.csdn.net/sinat_31608641/article/details/104678485