前言
最近心血来潮,想具体的去学习一下图像处理,所以报了知识星球的一个OpenCV研习社,将自己每天的学习,分享一下。写个 blog 加深一下知识。
一、数组遍历(缺点:慢)
1、示例
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char* argv[])
{
Mat src = imread("F:/Cvimage/test.png");
if (src.empty())
{
printf("could not load image....\n");
return -1;
}
namedWindow("input", WINDOW_AUTOSIZE);
imshow("input", src);
int height = src.rows; //读图片高度
int width = src.cols; //读取图片宽度
int ch = src.channels(); //读取图片通道数 rgb:三通道 灰色图像:单通道 rgba:四通道,多一个透明度
//数组读取图像像素
for (int c = 0; c < ch; c++)
{
for (int row = 0; row < height; row++)
{
for (int col = 0; col < width; col++)
{
if (ch == 3)
{
Vec3b bgr = src.at<Vec3b>(row, col);
bgr[0] = 255 - bgr[0]; //蓝 rgb 最大值为255,最终图像取反
bgr[1] = 255 - bgr[1]; //绿
bgr[2] = 2