图像像素的算数操作-5

news/2024/11/17 10:53:26/

一、代码部分

(1)头文件中声明函数

#pragma once
#include<opencv2/opencv.hpp>using namespace cv;class QuickDemo
{
public:void colorSpace_Demo(Mat& image);void mat_creation_demo(Mat& image);void pixel_visit_demo(Mat& image);void operators_demo(Mat& image); // 本次声明函数};

 (2)quickdemo.cpp中添加函数

// 图像像素的算术操作
void QuickDemo::operators_demo(Mat& image)
{Mat dst = Mat::zeros(image.size(), image.type());;//dst = image + Scalar(50, 50, 50); //dst = image - Scalar(50, 50, 50);//dst = image/Scalar(2, 2, 2);//dst = image * 2; // 可执行// dst = image*Scalar(2, 2, 2); // 报错 // 特殊函数乘法Mat m = Mat::zeros(image.size(), image.type());m = Scalar(50, 50, 50);// multiply(image, m, dst); // 可执行// 加法int width = image.cols;int height = image.rows;int dims = image.channels();for (int row = 0; row < height; row++){for (int col = 0; col < width; col++){// 灰度图if (dims == 1){int pv = image.at<uchar>(row, col); // 每个像素值是字节类型的,强制转换成整形,uchar范围是(0,255),也就是每个像素的范围image.at<uchar>(row, col) = 255 - pv; // 255减,还在255范围内 取反,灰度图会黑白相反}// 彩色图if (dims == 3){Vec3b p1 = image.at<Vec3b>(row, col); // 基于数组下标Vec3b p2 = m.at<Vec3b>(row, col);dst.at<Vec3b>(row,col)[0] = saturate_cast<uchar>(p1[0] +p2[0]); // 做范围判定是否在uchar范围内,限制在0-255区间内dst.at<Vec3b>(row,col)[1] = saturate_cast<uchar>(p1[1] + p2[1]);dst.at<Vec3b>(row,col)[2] = saturate_cast<uchar>(p1[2] + p2[2]);}}}// 调用API// add(image, m, dst);// subtract(image, m, dst);// divide(image, m, dst);imshow("sub", dst);}

(3)main函数中添加mat_creation_demo 

#include<opencv2\opencv.hpp>
#include<iostream>
#include<quickopencv.h>using namespace cv;
using namespace std;int main(int argc, char** argv)
{Mat src = imread("D:\\Deeyea\\Learning\\peace.jpg"); // 8位,通道为B G Rif (src.empty()){printf("无法加载图片\n");}//namedWindow("show", WINDOW_FREERATIO);imshow("image", src);QuickDemo qd;// 创建对象qd.operators_demo(src); // 图像对象的创建与赋值waitKey(0); destroyAllWindows;return 0;
}

 

 结果如下图所示:

相关参考:

(1)OpenCV 中的 Scalar 类、Vec类_yleavesw的博客-CSDN博客

(2)opencv中的Scalar()函数_一叶孤舟渡的博客-CSDN博客_opencv scalar

(3)OpenCV学习笔记(3)——Scalar数据类型理解_Lavi_qq_2910138025的博客-CSDN博客_scalar(4)【opencv4.3.0教程】06之基础结构3之Scalar_结构详解_水亦心的博客-CSDN博客_scalar_t

  (5) Opencv之<Vec3b>是什么东东_五仁月饼哭了的博客-CSDN博客_opencv中vec3b

(6)OpenCV中的Vec3b、Vec2i、Vec3f等是什么意思?_昊虹AI笔记的博客-CSDN博客_opencv vec3b


http://www.ppmy.cn/news/167282.html

相关文章

用于图像处理的高性能计算框架

框架介绍GPUNPPNVIDIA Performance Primitives&#xff0c;NVIDIA公司针对GPU开发了的GPU加速的图像、视频、信号处理库&#xff0c;在安装完CUDA环境时会自动安装。通过调用NPP函数&#xff0c;可以免去手写CUDA内核函数&#xff0c;快速完成开发。CUDACompute Unified Device…

激光雷达和相机的标定计算软件

激光雷达和相机的标定计算软件 功能简介一、主界面1.图标2.界面 二、功能区介绍1.文件区2.交互区3.配置区 三、软件获取 功能简介 基于激光雷达和相机的标定计算软件可以利用不同的计算方法求解雷达三维特征点到图像二维特征点的旋转矩阵、平移矩阵、相机内参等等。集成了四种计…

计算图像清晰度

1、方差 在相机拍照时&#xff0c;通常会看到相机由模糊至清晰的自动对焦过程&#xff0c;逐渐形成清晰度比较高的图像。其实这是非常简单的处理,&#xff0c;并不需要非常特殊的算法&#xff0c;方法各式各样好多种&#xff0c;而且效率极其高。 表示样品离散程度的知识&…

科学计算机怎么取消math,多功能科学图形计算器(Mathlab)

多功能科学图形计算器(Mathlab)是一款非常科学的集成代数图形计算器&#xff0c;是中小学生和大学生研究生&#xff0c;以及任何有复杂计算需求者必不可少的计算工具。设计这款软件的目的是取代笨重而昂贵的手持式计算器&#xff0c;并适用于几乎所有的安卓手机或平板电脑。 多…

十五个AI图像放大工具

1. VanceAI Image Enlarger VanceAI Image Enlarger - 最大 8x VanceAI Anime Upscaler - 动漫图片&#xff0c;最大 16x 2. icons8 Upscaler icons8 Upscaler 详细介绍&#xff1a;Icons8 Upscaler Review. 3. Deep Image AI Deep Image AI 4. Waifu2x Waifu2x 5. Let…

intel realsense计算指定像素真实深度与像素坐标系转相机坐标系

intel realsense深度转真实距离与像素坐标系转相机坐标系 1. 深度转真实距离 1. 1初始化配置 import pyrealsense2 as rs # 相机配置 pipeline rs.pipeline() config rs.config() config.enable_stream(rs.stream.depth, WIDTH, HEIGHT, rs.format.z16, 60) config.enable…

像素密度计算

为解决Android设备碎片化&#xff0c;引入一个概念density&#xff0c;也就是密度.它指的是在一定尺寸的物理屏幕上显示像素的数量,一般使用dpi(dots per inch,每英寸像素数)作为单位. 比如设备分辨率为240x320,屏幕物理尺寸为1.5英寸x2英寸(对角线为2.5), 它的密度可以用分辨率…

图像处理入门:图像的像素级运算

点运算&#xff1a; 代数运算&#xff1a; 加法运算&#xff1a; OpenCV中的加法是一种饱和算法&#xff0c;而python中的numpy是一种模操作。 import cv2 import numpy as npif __name____main__: # image cv2.imread(F:/_photo/1/33.png) # h,wimage.shape # resizecv2.re…