04 Opencv图像操作

文章目录

  • 读写像素
  • 修改像素值
  • Vec3b与Vec3F
  • 灰度图像增强
  • 获取图像通道
  • bitwise_not 算子对图像非操作

读写像素

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

  • 读一个RGB像素点的像素值 Vec3f intensity = img.at(y, x); float blue = intensity.val[0]; float green = intensity.val[1]; float red =
    intensity.val[2];

修改像素值

  • 灰度图像 img.at(y, x) = 128;

  • RGB三通道图像 img.at(y,x)[0]=128; // blue img.at(y,x)[1]=128; // green img.at(y,x)[2]=128; // red

  • 空白图像赋值 img = Scalar(0);

  • ROI选择 Rect r(10, 10, 100, 100); Mat smallImg = img®;

Vec3b与Vec3F

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

灰度图像增强

可以用增强图像加钱图像的辨析度

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{Mat src = imread("test.jpg");//读取图片if (src.empty()){cout << "could not load img...";return -1;}namedWindow("test");//设置窗口名称imshow("test", src);//灰度图像反转Mat gray_image;cvtColor(src, gray_image, COLOR_BGR2GRAY);// 转换为灰度图namedWindow("invert gray");imshow("invert gray", gray_image);int width = gray_image.cols;//获取图像的宽高int high = gray_image.rows;for (int i = 0; i < high; i++){for (int j = 0; j < width; j++){int gray = gray_image.at<uchar>(i, j);//获取行列坐标点gray_image.at<uchar>(i, j) = 255 - gray;//图像反转}}namedWindow("invert gray");imshow("invert gray", gray_image);waitKey(0);return 0;
}

在这里插入图片描述

获取图像通道

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{Mat src = imread("test.jpg");//读取图片if (src.empty()){cout << "could not load img...";return -1;}namedWindow("test");//设置窗口名称imshow("test", src);//灰度图像反转Mat gray_image;cvtColor(src, gray_image, COLOR_BGR2GRAY);// 转换为灰度图//namedWindow("invert gray");//imshow("invert gray", gray_image);int width = gray_image.cols;//获取图像的宽高int high = gray_image.rows;int nc = src.channels();//获取通道值Mat dst;dst.create(src.size(), src.type());for (int row = 0; row < high; row++){for (int col = 0; col < width; col++){if (nc == 1)//单通道{int gray = gray_image.at<uchar>(row, col);//获取行列坐标点gray_image.at<uchar>(row, col) = 255 - gray;//图像反转}else if (nc == 3){int b = src.at<Vec3b>(row, col)[0];int g = src.at<Vec3b>(row, col)[1];int r = src.at<Vec3b>(row, col)[2];dst.at<Vec3b>(row, col)[0] = b;dst.at<Vec3b>(row, col)[1] = g;dst.at<Vec3b>(row, col)[2] = r;//调整bgr参数获取想要的效果gray_image.at<uchar>(row, col) = min(r, min(b, g));//获取rgb的最小值}}}//namedWindow("invert gray");//imshow("invert gray", gray_image);imshow("三色通道", dst);waitKey(0);return 0;
}

在这里插入图片描述

bitwise_not 算子对图像非操作

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{Mat src = imread("test.jpg");//读取图片if (src.empty()){cout << "could not load img...";return -1;}namedWindow("test");//设置窗口名称imshow("test", src);//灰度图像反转Mat gray_image;cvtColor(src, gray_image, COLOR_BGR2GRAY);// 转换为灰度图//namedWindow("invert gray");//imshow("invert gray", gray_image);int width = gray_image.cols;//获取图像的宽高int high = gray_image.rows;int nc = src.channels();//获取通道值Mat dst;dst.create(src.size(), src.type());//for (int row = 0; row < high; row++)//{//	for (int col = 0; col < width; col++)//	{//		if (nc == 1)//单通道//		{//			int gray = gray_image.at<uchar>(row, col);//获取行列坐标点//			gray_image.at<uchar>(row, col) = 255 - gray;//图像反转//		}//		else if (nc == 3)//		{//			//			int b = src.at<Vec3b>(row, col)[0];//			int g = src.at<Vec3b>(row, col)[1];//			int r = src.at<Vec3b>(row, col)[2];//			dst.at<Vec3b>(row, col)[0] = b;//			dst.at<Vec3b>(row, col)[1] = g;//			dst.at<Vec3b>(row, col)[2] = 0;//调整bgr参数获取想要的效果//			gray_image.at<uchar>(row, col) = min(r, min(b, g));//获取rgb的最小值//		}//		//	}//}bitwise_not(src, dst);//namedWindow("invert gray");//imshow("invert gray", gray_image);imshow("三色通道", dst);waitKey(0);return 0;
}

在这里插入图片描述

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{Mat src = imread("test.jpg");//读取图片if (src.empty()){cout << "could not load img...";return -1;}namedWindow("test");//设置窗口名称imshow("test", src);//灰度图像反转Mat gray_image;cvtColor(src, gray_image, COLOR_BGR2GRAY);// 转换为灰度图//namedWindow("invert gray");//imshow("invert gray", gray_image);int width = gray_image.cols;//获取图像的宽高int high = gray_image.rows;int nc = src.channels();//获取通道值Mat dst;dst.create(src.size(), src.type());for (int row = 0; row < high; row++){for (int col = 0; col < width; col++){if (nc == 1)//单通道{int gray = gray_image.at<uchar>(row, col);//获取行列坐标点gray_image.at<uchar>(row, col) = 255 - gray;//图像反转}else if (nc == 3){int b = src.at<Vec3b>(row, col)[0];int g = src.at<Vec3b>(row, col)[1];int r = src.at<Vec3b>(row, col)[2];dst.at<Vec3b>(row, col)[0] = 255-b;dst.at<Vec3b>(row, col)[1] = 255-g;dst.at<Vec3b>(row, col)[2] = 255-r;//调整bgr参数获取想要的效果//gray_image.at<uchar>(row, col) = min(r, min(b, g));//获取rgb的最小值}}}//bitwise_not(src, dst);//namedWindow("invert gray");//imshow("invert gray", gray_image);imshow("三色通道", dst);waitKey(0);return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/499602.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux-Uboot命令

help命令 进入 uboot 的命令行模式后输入“help”或者“&#xff1f;”&#xff0c;然后按下回车即可查看当前 uboot 所支持的命令。 查看某一个命令的帮助信息&#xff1a;&#xff1f;命令名称 或 help命令名称 信息查询命令 常用的和信息查询有关的命令有 3 个…

代码随想录算法训练营第三十二天|122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II

122.买卖股票的最佳时机II 刷题https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/description/文章讲解https://programmercarl.com/0122.%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BAII.html视频讲解https://www.bi…

Java的编程之旅32——继承与多态的联合使用

模拟USB设备接入电脑 1.首先建立一个名为“USB”的抽象类 public abstract class USB {public abstract void On();public abstract void Off(); }这是一个抽象类USB&#xff0c;表示一个USB设备。 该类有两个抽象方法On()和Off()&#xff0c;分别表示打开和关闭USB设备。 由…

荣获国家高新技术企业认证,苹芯科技领航AI芯片产业发展

北京苹芯科技有限公司&#xff08;以下简称“苹芯科技”&#xff09;凭借在存算一体芯片领域的卓越表现&#xff0c;荣获国家高新技术企业认证。这一荣誉不仅是对苹芯科技多年来在科技创新、产品研发等方面所取得成果的肯定&#xff0c;更是对其未来发展潜力的认可。 苹芯科技…

XSS中级漏洞(靶场)

目录 一、环境 二、正式开始闯关 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x0B 0x0C 0x0D 0x0E ​ 0x0F 0x10 0x11 0x12 一、环境 在线环境&#xff08;gethub上面的&#xff09; alert(1) 二、正式开始闯关 0x01 源码&#xff1a; 思路&#xff1a;闭…

Vue.js+SpringBoot开发电子元器件管理系统

目录 一、摘要1.1 项目简介1.2 项目录屏 二、研究内容三、界面展示3.1 登录&注册&主页3.2 元器件单位模块3.3 元器件仓库模块3.4 元器件供应商模块3.5 元器件品类模块3.6 元器件明细模块3.7 元器件类型模块3.8 元器件采购模块3.9 元器件领用模块3.10 系统基础模块 四、…

网络工程师笔记3

IP地址类型 A类 255.0.0.0B类 255.255.0.0C类 255.255.255.0D类 E类 子网掩码&#xff1a;从左到右连续的确定网络位 2-4-8-16-32-64-128-256 128 &#xff1a; 1000 0000 64 &#xff1a; 0100 0000 32 &#xff1a; 0010 0000 16 &#xff1a; 0001 0000 8 &am…

Ubuntu整系统迁移到另一个硬盘中

以ubuntu20.04为例&#xff0c;之前使用的是1T的移动硬盘&#xff0c;每次进入后性能不太稳定&#xff0c;所以最近买了块1T的固态硬盘给我的笔记本装上了&#xff0c;但是如果重新进行各种软件安装及环境配置就太麻烦了&#xff0c;所以采用了系统迁移 1.首先制作一个Ubuntu系…

hcip交换

交换机功能 无限的传输距离——识别&#xff0c;重写电信号&#xff08;帧&#xff09;保证信息完整彻底解决了冲突二层单播——MAC地址表提高端口密度 单播地址&#xff1a;MAC地址第一个字节第8位为0 组播地址&#xff1a;MAC地址第一个字节第8位为1 广播地址&#xff1a;全1…

面试数据库篇(mysql)- 11主从同步

原理 MySQL主从复制的核心就是二进制日志 二进制日志&#xff08;BINLOG&#xff09;记录了所有的 DDL&#xff08;数据定义语言&#xff09;语句和 DML&#xff08;数据操纵语言&#xff09;语句&#xff0c;但不包括数据查询&#xff08;SELECT、SHOW&#xff09;语句。 复…

走进中国电车领跑企业“NI蔚来”丨共谋商业,共话ESG

期盼与热望将冬季的寒冷拂去&#xff0c;复旦大学-华盛顿大学EMBA项目迎来了一位新朋友——美国圣路易斯华盛顿大学奥林商学院的新任院长Michael Mazzeo教授。Mazzeo院长在上海进行了为期3天的访问。这里是 Mazzeo院长上任后国际访问交流之旅的第一站。      漫步校园&…

工作流软件平台服务商教您如何提高办公效率

想要提高办公效率&#xff0c;是很多企业的发展梦想。作为工作流软件平台服务商&#xff0c;流辰信息一直在低代码技术平台领域深耕细作&#xff0c;围绕客户需求和市场发展坚持自主创新&#xff0c;不断超越自己&#xff0c;成功向市场推出多款优秀的低代码技术平台产品&#…