OpenCV4学习笔记(一):图像读取显示;灰度化、高斯模糊、降采样;读、写某处像素值

最近开始学习OpenCV,记录一下学习笔记,便于复习巩固。

本代码的功能、作用:
    1.读取并显示图像;
    2.对rgb图像进行灰度化、高斯模糊、降采样处理
    3.读、写某处的像素值
 

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

using namespace cv;

int main(int argc, char **argv) {
	//创建显示输入、输出图像的窗口
	namedWindow("img_rgb", WINDOW_AUTOSIZE);   //原图:rgb图像
	namedWindow("img_gray", WINDOW_AUTOSIZE);  //灰度图
	namedWindow("img_gauss", WINDOW_AUTOSIZE);   //gaussian模糊
	namedWindow("img_pyr", WINDOW_AUTOSIZE);   //img_pyr为降采样得到的图像
	namedWindow("img_canny", WINDOW_AUTOSIZE);   //canny边缘检测图像
	//读入图像,并显示
	Mat img_rgb = imread("D:\\OpenCV_Test\\车牌.jpg");
	//Mat img = imread("D:/OpenCV_Test/车牌.jpg");    //或者这样写路径
	if (img_rgb.empty()) {
		std::cout << "读入图像失败!" << std::endl;
		return -1;
	}
	imshow("img_rgb", img_rgb);
	//创建输出图像对象:申请Mat图像结构 对象
	Mat	img_gray, img_gauss, img_pyr, img_canny;
	//对输入图像进行处理
	cvtColor(img_rgb, img_gray, cv::COLOR_BGR2GRAY);  //灰度图
	GaussianBlur(img_rgb, img_gauss, Size(5, 5), 3, 3);  //高斯模糊
	pyrDown(img_rgb, img_pyr);   // 降采样
	Canny(img_rgb, img_canny, 10, 200, 3, true);
	//显示输出图像
	imshow("img_gray", img_gray);
	imshow("img_gauss", img_gauss);
	imshow("img_pyr", img_pyr);
	imshow("img_canny", img_canny);
	
	//*********读写某处的像素值******************
	int x = 16, y = 32;
	Vec3b intensity = img_rgb.at<cv::Vec3b>(y, x);
	uchar blue = intensity[0];
	uchar green = intensity[1];
	uchar red = intensity[2];

	//输出原图像rgb图像在点(x,y)处的像素值
	std::cout << "img_rgb : pixels At (x , y) = (" << x << "," << y << ") : (blue, green, red) = (" <<
		(unsigned int)blue << ", " << (unsigned int)green << ", " << (unsigned int)red << ")" << std::endl;
	//输出灰度图像在(x,y)处的灰度值
	std::cout << "img_gray : Gray pixel at (x , y) is : " << (unsigned int)img_gray.at<uchar>(y, x) << std::endl;
	//输出采样图像在(x,y)处的像素值
	std::cout << "img_pyr : Pyramid2 pixel at (x/4 , y/4) is : " << (unsigned int)img_gray.at<uchar>(y/4, x/4) << std::endl;
	
	/*Note:改变rgb图像某点处某通道的像素值,可以使用 img_rgb.at<cv::Vec3b>(y, x)[i] = xx;  //其中i=0,1,2  */

	//将img_canny图上的(x,y)处像素值设置为128
	img_canny.at<uchar>(x, y) = 128;
	//*********************************************

	//等待用户按键
	waitKey(0);
	destroyAllWindows();
	return 0;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值