opencv_001
C++ OpenCV基本操作
图像读取与显示
图像保存
imwrite(out_dir, src);
图像色彩空间转换
空间色彩转换函数cvtColor
-
RGB
RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色。 -
HSV
HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。
这个模型中颜色的参数分别是:色调(H),饱和度(S),明度(V)。
函数 | 作用 |
---|---|
COLOR_BGR2GRAY = 6 | 彩色到灰度 |
COLOR_GRAY2BGR = 6 | 灰度到彩色 |
COLOR_BGR2HSV = 6 | BGR到HSV |
COLOR_HSV2BGR = 6 | HSV到BGR |
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main() {
Mat src = imread("E:\\study\\opencv_C++\\reba.jpg");
if (src.empty())
{
printf("Could not load image!");
return -1;
}
namedWindow("normal", WINDOW_FREERATIO);
namedWindow("gray", WINDOW_FREERATIO);
namedWindow("hsv", WINDOW_FREERATIO);
imshow("normal", src);
Mat img_gray, img_hsv;
// 转换为灰度图像
cvtColor(src, img_gray, COLOR_BGR2GRAY);
imshow("gray", img_gray);
// 转换为hsv图像
cvtColor(src, img_hsv, COLOR_BGR2HSV);
imshow("hsv", img_hsv);
waitKey(0);
destroyAllWindows();
}
C++中的Mat对象
在C++的opencv中,一切图像对象皆为Mat
图像像素的读写操作
点击查看代码
// 图像像素的读写操作
void pixel_visit_demo(Mat& image) {
// 获取图像的宽
int width = image.cols;
// 获取图像的高
int height = image.rows;
// 获取图像通道数
int channels = image.channels();
for (int row = 0; row < height; row++) {
for (int col = 0; col < width; col++) {
// 灰度图
if (channels == 1) {
// 获取像素
int pv = image.at<uchar>(row, col);
image.at<uchar>(row, col) = 255 - pv;
}
// 彩色图
if (channels == 3) {
Vec3b bgr = image.at<Vec3b>(row, col);
image.at<Vec3b>(row, col)[0] = 255 - bgr[0];
image.at<Vec3b>(row, col)[1] = 255 - bgr[1];
image.at<Vec3b>(row, col)[2] = 255 - bgr[2];
}
}
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程