千家信息网

opencv3/C++图像像素操作的方法

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了opencv3/C++图像像素操作的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇opencv3/C++图像像素操作的方法文章都会有所收获,下面我们
千家信息网最后更新 2026年11月02日opencv3/C++图像像素操作的方法

这篇文章主要介绍了opencv3/C++图像像素操作的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇opencv3/C++图像像素操作的方法文章都会有所收获,下面我们一起来看看吧。

RGB图像转灰度图

RGB图像转换为灰度图时通常使用:

进行转换,以下尝试通过其他对图像像素操作的方式将RGB图像转换为灰度图像。

#include#includeusing namespace cv;int main(){ //像素操作 Mat src,dst; src = imread("E:/image/image/daibola.jpg"); if(src.empty()) {  printf("can not load image \n");  return -1; } namedWindow("input"); imshow("input",src); dst.create(src.size(), src.type()); for(int row = 0; row < src.rows; row++) {  for(int col = 0; col < src.cols; col++)  {   int b = src.at(row, col)[0];   int g = src.at(row, col)[1];   int r = src.at(row, col)[2];   dst.at(row, col)[0] = max(r,max(g,b));   dst.at(row, col)[1] = max(r,max(g,b));   dst.at(row, col)[2] = max(r,max(g,b));  } } namedWindow("output"); imshow("output",dst); waitKey();}

同理使用min(r,min(g,b))可以看到由于选择了较小的灰度值图像会明显变暗:

图像线性增强

通过对图像像素操作(线性变换),实现图像的线性增强。

#include#includeusing namespace cv;int main(){ Mat src1, dst; src1 = imread("E:/image/image/im1.jpg"); if(src1.empty()) {  printf("can not load im1 \n");  return -1; } double alpha = 1.2, beta = 50; dst = Mat::zeros(src1.size(), src1.type()); for(int row = 0; row < src1.rows; row++) {  for(int col = 0; col < src1.cols; col++)  {   if(src1.channels() == 3)   {    int b = src1.at(row, col)[0];     int g = src1.at(row, col)[1];     int r = src1.at(row, col)[2];     dst.at(row, col)[0] = saturate_cast(b*alpha + beta);     dst.at(row, col)[1] = saturate_cast(g*alpha + beta);     dst.at(row, col)[2] = saturate_cast(r*alpha + beta);    }   else if (src1.channels() == 1)   {    float v = src1.at(row, col);     dst.at(row, col) = saturate_cast(v*alpha + beta);   }  } } namedWindow("output",CV_WINDOW_AUTOSIZE); imshow("output", dst); waitKey(); return 0;}

掩膜操作调整图像对比度

使用一个3×3掩模增强图像对比度:

#include#includeusing namespace cv;int main(){ Mat src, dst; src = imread("E:/image/image/daibola.jpg"); CV_Assert(src.depth() == CV_8U); if(!src.data) {  printf("can not load image \n");  return -1; } src.copyTo(dst); for(int row = 1; row<(src.rows - 1); row++) {  const uchar* previous = src.ptr(row - 1);  const uchar* current = src.ptr(row);  const uchar* next = src.ptr(row + 1);  uchar* output = dst.ptr(row);  for(int col = src.channels(); col < (src.cols - 1)*src.channels(); col++)  {   *output = saturate_cast(9 * current[col] - 2*previous[col] - 2*next[col] - 2*current[col - src.channels()] - 2*current[col + src.channels()]);   output++;  } } namedWindow("image", CV_WINDOW_AUTOSIZE); imshow("image",dst); waitKey(); return 0;}

像素重映射

利用cv::remap实现像素重映射;

cv::remap参数说明:

Remap(InputArray src,// 输入图像OutputArray dst,// 输出图像InputArray map1,// 映射表1(CV_32FC1/CV_32FC2)InputArray map2,// 映射表2(CV_32FC1/CV_32FC2)int interpolation,// 选择的插值int borderMode,// 边界类型(BORDER_CONSTANT)const Scalar borderValue// 颜色 )

插值方法:

CV_INTER_NN =0, CV_INTER_LINEAR =1, CV_INTER_CUBIC =2, CV_INTER_AREA =3, CV_INTER_LANCZOS4 =4

通过像素重映射实现图像垂直翻转:

#includeusing namespace cv;int main(){ Mat src,dst; src = imread("E:/image/image/daibola.jpg"); if(src.empty()) {  printf("can not load image \n");  return -1; } namedWindow("input", CV_WINDOW_AUTOSIZE); imshow("input", src); Mat mapx,mapy; mapx.create(src.size(), CV_32FC1); mapy.create(src.size(), CV_32FC1); for(int row = 0; row < src.rows; row++) {  for(int col = 0; col < src.cols; col++)  {   mapx.at(row, col) = col;   mapy.at(row, col) = src.rows - row - 1;  } } remap(src, dst, mapx, mapy, CV_INTER_NN, BORDER_CONSTANT, Scalar(0,255,255)); namedWindow("output", CV_WINDOW_AUTOSIZE); imshow("output",dst); waitKey(); return 0;}

关于"opencv3/C++图像像素操作的方法"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"opencv3/C++图像像素操作的方法"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

图像 像素 方法 灰度 知识 线性 内容 对比度 篇文章 插值 选择 明显 价值 参数 掩膜 操作简单 文章 方式 易懂 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技工作委员会副主任毛军 国智互联网科技 科技金融是不是互联网金融 A股互联网金融科技公司 互联网电商科技 鸠鸠互联网科技 为想互联网科技 贷财互联网科技 互联网科技视频素材 一五八零互联网科技 西藏七维空间互联网科技有限公司 创业天下互联网科技有限公司 北京华百购互联网科技有限公司 互联网科技扶贫时间 玉溪新华互联网科技好不好 工业互联网等科技实现智能化赋能 启辰互联网科技 富国互联网金融科技混合基金 长沙渺峰互联网科技有限公司 北京品多多互联网科技有限公司 湖北九亚互联网络科技有限公司 互联网 科技 互联网科技媒体 浩特互联网科技 互联网科技股午盘股票涨跌 武汉健翔互联网络科技有限公司 崇明区互联网教育科技售后服务 互联网第三次科技革命特征 互联网高科技行业有哪些企业 科技互联网专业工作会议发言稿
0