zoukankan      html  css  js  c++  java
  • openCV

    读写图像、读写像素、修改像素值

    读写图像

    • imread 可以指定加载为灰度或者RGB图像
    • Imwrite 保存图像文件,类型由扩展名决定

    读写像素

    • 读一个GRAY像素点的像素值(CV_8UC1)

      Scalar intensity = img.at<uchar>(y, x); 
      或者
      Scalar intensity = img.at<uchar>(Point(x, y));
      
    • 读一个RGB像素点的像素值

      Vec3f intensity = img.at<Vec3f>(y, x); 
      float blue = intensity.val[0]; 
      float green = intensity.val[1]; 
      float red = intensity.val[2];
      

    修改像素值

    // 灰度图像
    img.at<uchar>(y, x) = 128;
    
    // RGB三通道图像
    img.at<Vec3b>(y,x)[0]=128; // blue
    img.at<Vec3b>(y,x)[1]=128; // green
    img.at<Vec3b>(y,x)[2]=128; // red
    
    // 空白图像赋值
    img = Scalar(0);
    
    // ROI选择
    Rect r(10, 10, 100, 100); 
    Mat smallImg = img(r);
    

    Vec3b与Vec3F

    • Vec3b对应三通道的顺序是blue、green、red的uchar类型数据。
    • Vec3f对应三通道的float类型数据
    • 把CV_8UC1转换到CV32F1实现如下:src.convertTo(dst, CV_32F);

    代码演示

    #include <opencv2/core/core.hpp> 
    #include <opencv2/imgcodecs.hpp> 
    #include <opencv2/highgui/highgui.hpp>
    #include <iostream>
    
    using namespace cv;
    using namespace std;
    
    int main(int argc, char** args) {
    	Mat image = imread("D:/test.jpg", IMREAD_COLOR);
    	if (image.empty()) {
    	cout << "could not find the image resource..." << std::endl;
    	return -1;
    }
    
    	int height = image.rows;
    	int width = image.cols;
    	int channels = image.channels();
    	printf("height=%d width=%d channels=%d", height, width, channels);
      
    	for (int row = 0; row < height; row++) {
           for (int col = 0; col < width; col++) {
                    if (channels == 3) {
                             image.at<Vec3b>(row, col)[0] = 0; // blue
                             image.at<Vec3b>(row, col)[1] = 0; // green
                    }
             }
    	}
    
    	namedWindow("My Image", CV_WINDOW_AUTOSIZE);
    	imshow("My Image", image);
    	waitKey(0);
    	return 0;
    }
    
  • 相关阅读:
    ubuntu16.04解决播放swf视频文件问题
    ubuntu下设置clion是使用clang和clang++
    Linux 下没有conio.h 已解决
    适合最新版docker自定义启动配置
    nginx限制ip并发数
    nginx 403错误
    ubuntu 支持中文
    CentOS 5 上使用yum同时安装32位和64位包的解决方法
    rhel yum报错
    因为swap分区无法启动
  • 原文地址:https://www.cnblogs.com/coderzjz/p/13182856.html
Copyright © 2011-2022 走看看