/*
*本程序主要学习图像的简单的处理,过滤操作
*第一种方法使用自己写的算法
*第二种使用OpenCV自带的函数sharpen2D()
*注意学习 自定义矩阵的方法
*/
#include "cv.h"
#include "highgui.h"
#include "..\..\..\..\..\..\opencv\build\include\opencv2\imgproc\imgproc.hpp"
void sharpen1(cv::Mat image , cv::Mat &result)
{
result.create(image.size() , image.type()) ;//Create的两种方法
int tRows = image.rows ;
int tcols = image.cols ;
for(int i = 1 ; i < tRows - 1 ; ++ i)
{
const uchar * pUp = image.ptr<const uchar>(i - 1) ;
const uchar * pCur = image.ptr<const uchar>(i) ;
const uchar * pDown = image.ptr<const uchar>(i + 1) ;
uchar * pOut = result.ptr<uchar>(i) ;
for(int j = 1 ; j < tcols - 1 ; ++ j)
{
pOut[j] = cv::saturate_cast<uchar>(
5 * pCur[j] - pCur[j-1] - pCur[j+1] - pUp[j] - pDown[j]) ;
}
}
result.row(0).setTo(cv::Scalar(0)) ;//注意这里row 和 col 与 rows 和 cols 的区别
result.row(tRows - 1).setTo(cv::Scalar(0)) ;
result.col(0).setTo(cv::Scalar(0)) ;
result.col(tcols - 1).setTo(cv::Scalar(0)) ;
}
void shprpen2D(cv::Mat image , cv::Mat &result)
{
cv::Mat kernel(3 , 3 , CV_32F , cv::Scalar(0)) ;
kernel.at<float>(0 , 1) = -1;
kernel.at<float>(1 , 0) = -1;
kernel.at<float>(1 , 1) = 5 ;
kernel.at<float>(1 , 2) = -1 ;
kernel.at<float>(2 , 1) = -1;
cv::filter2D(image , result , image.depth() , kernel) ;
}
int main()
{
cv::Mat image ;
cv::Mat result ;
image = cv::imread("D:/Development/OpenCV/images/boldt.jpg" , 0) ;
cv::namedWindow("Original") ;
cv::imshow("Original" , image) ;
//sharpen1(image , result) ;
shprpen2D(image , result) ;
cv::namedWindow("Result") ;
cv::imshow("Result" , result) ;
cv::waitKey() ;
return 0 ;
}相关推荐
( Learning OpenCV 3 计算机视觉使用C++英文第三版高清.pdf
( Learning OpenCV 3 计算机视觉使用C++英文第三版高清.pdf
opencv 的 (x、y) 坐标与 (row、col) 坐标的区别和使用方法
目录1、创建全黑图像2、单通道图像素值的读取3、三通道图像素值的读取4、保存视频时的尺寸 使用opencv时,经常用错(x、y)坐标和 (row、col) 坐标,所以写个博客总结一下。 1、创建全黑图像 Mat img = Mat::zeros(Size(cols,rows), CV_8UC1); //全黑单通道图 Mat img = Mat::zeros(Size(cols,rows), CV_8UC3); //全黑三通道图 Mat img1 = Mat::zeros(img.size(),
H无穷控制学习笔记——加权灵敏度H无穷控制问题
一、加权灵敏度H无穷问题 系统结构如上图所示。被控对象P的状态空间方程为(Ap,Bp,Cp,DpA_p,B_p,C_p,D_pAp,Bp,Cp,Dp),加权函数W1的状态空间方程为(A1,B1,C1,D1A_1,B_1,C_1,D_1A1,B1,C1,D1),加权函数W2的状态空间方程为(A2,B2,C2,D2A_2,B_2,C_2,D_2A2,B2,C2,D2),加权函数W3的状态空间方程为(A3,B3,C3,D3A_3,B_3,C_3,D_3A3,B3,C3,D3)。
opencv 图像row、col坐标对应关系
声明:本内容转载自https://blog.youkuaiyun.com/u010189457/article/details/71553436?utm_source=itdadao&utm_medium=referral,只为阅读方便。 行列与坐标系对应关系 行rows:Y (height) 列cols:X (width) 注意!注意!注意! 在Mat类型变量访问时下标是反着写的,即:按照...
保姆级教程:在RK3568 Debian系统上搞定AIC8800 WiFi与蓝牙驱动(含固件路径与开机自启脚本)
本文提供在RK3568 Debian系统上配置AIC8800 WiFi与蓝牙驱动的保姆级教程,涵盖驱动移植、固件部署、开机自启脚本等关键步骤。通过详细的硬件连接指南、内核配置示例和常见问题解决方案,帮助开发者快速实现无线模块的全功能配置,特别适合嵌入式Linux开发者参考。
Matlab使用GitHub的踩坑记录(持续更新)
Matlab使用git的踩坑记录前言Matlab设置Git的官方帮助文档系统配置新建Git两种代码管理方式典型源代码管理SVN分布式源代码管理 Git注意:SVN和Git都可以用GitHub创建新的库 前言 作为Git初学者,对Git的代码版本管理非常非常喜欢,给了我极大的安全感。特别是想到之前的几次Matlab、Latex和python的代码莫名其妙被折腾没了又没法找回的悲剧,决定慢慢的走入gi...
opencv里cols、rows分别对应宽(列)、高(行)
rows:row的复数,行,即图像的高,height。
0.嵌入式控制器EC实战 Embedded Controller开发概述
文章目录前言1.嵌入式控制器EC概述2.EC芯片框图(IT8502为例)3.General Purpose I/O Port (GPIO)4.SMBus(System Management Bus,系统管理总线)5.PWM、TACH6.KBC(KeyBoard Controller)7.PS/28.ADC(模数转换)总结 前言 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 1.嵌入式控制器EC概述 嵌入式控制器EC是挂在CPU的L
Opencv-坐标系与row&col的关系
https://blog.youkuaiyun.com/wangxuwen2/article/details/52443978?locationNum=7&fps=1 注意都是相反的! 之前没注意这个问题,导致我找了好久的错误! row == heigh == Point.y col == width == Point.x Mat::at(Point(x, y)) == Mat::at(y,x) 因为还有点的坐标,所以建议在访问时都用Mat::at(Point(x, y))这种形式吧,免去了点坐标和行列的转
图机器学习(7)——图神经网络 (Graph Neural Network, GNN)
图神经网络 (Graph Neural Network, GNN) 是一类专门处理图结构数据的深度学习方法。这类方法也被称为几何深度学习 (geometric deep learning),在社交网络分析、计算机图形学等众多领域正受到日益广泛的关注。在本节中,我们介绍了 GNN 的核心原理,将卷积等经典深度学习范式拓展至非欧几里得图空间,实现了局部结构与全局特征的层次化提取。
SAP 替代关系完全替代简介
这里产生了成品物料的计划订单,我们查看计划订单中BOM的变化,如下图可以看到物料的需求仍然落在了优先级为1的这个302300005555这个物料上面,并没有考虑到302300006666的这个库存,和我们理解的MRP的完全替代不一样,按我们的理解需求应该是要落在302300006666这个物料料,但是MRP计算后并没有这样进行分配。最近用户在对长周期物料进行备料的时候又提出替代料的问题,主料库存不足的时候需要考虑替代料的在途库存,经常会忘了SAP标准的替代料逻辑,这次一次性把这个逻辑写清楚。
opencv中含糊其辞的col和row
一般习惯是先写x后写y 初用cv担心有问题所以找翻译问了下结果中文意思含含混混尤其是只搜col的时候可以理解成行又能翻译成列? 结果嘞: col =x row =y opencv中一般是先写y后写x 头疼(能不能别那么任性?)加服气(里面自带的算法还真不是短时间内自己能憋出来的) 总而言之,还是要感谢opencv ...
把 ABAP writable CDS view entity 讲透:从只读建模到可写模型的 ABAP CDS 新能力
摘要:SAP引入的writable CDS view entity突破了传统CDS视图只读的限制,允许通过ABAP SQL直接进行数据修改。该特性通过WRITABLE关键字定义,使CDS视图成为与数据库表同等级别的可写对象。其核心价值在于为数据集成、中间层同步等场景提供结构化写入入口,但需注意不应绕过业务规则。最佳实践建议保持底层表结构简单映射,避免复杂变形。这一特性标志着CDS从单纯消费模型向双向数据交互能力的演进,为ABAP开发提供了新的数据边界设计思路。
opencv学习之路【三】——opencv运行别人程序
前言 如果你还没有搭建环境请看我前一篇《辉哥opencv学习之路【2】--环境搭建》 走好不送! 不管学习什么,如果能先运行起一个例子或别人的程序,心中一定会更受鼓舞,更何况我们可以从别人的代码中学到很多东西, 虽然运行别人的例子不是什么难事,但是对于刚接触opencv和vs的人来说确实比较困难,像我以前都是一直在elicpse下写java, 但是现在要用vs写c++突然有些不适应。
从0玩转Mamba神经网络:理论+实战的保姆级教程
Mamba神经网络是一种基于状态空间模型(SSM)的高效序列处理架构,相比Transformer具有更快的推理速度和更低的内存消耗。本文提供从理论到实践的完整指南,详细讲解Mamba的工作原理、与Transformer的差异,并给出基于PyTorch的文本分类实战示例。教程包含环境配置、数据处理、模型搭建、训练评估全流程,展示了Mamba在IMDb情感分析任务中的应用。文章还探讨了Mamba的性能优势及进阶方向,为开发者提供了探索这一新兴技术的实用指南。通过阅读本文,读者可以快速掌握Mamba的核心概念并上
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
OpenCV学习(三) xphoto
本文参考Opencv官网,以及自身理解,进行了相关整理 Opencv xphoto reference 该包主要是针对于白平衡操作的包,白平衡主要是为了使图像整体的色温有一定的调整。 白平衡与色温紧密相关,不同色温光源下图像会呈现不同程度的偏色,对这些偏色的调整就是白平衡所需要做的工作 xphoto是一个white balance namespace,opencv自带了三种白平衡的算法,下面一个...
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
Python之OpenCV的学习(三)
1.图像的边界填充 边界填充的方式:上、下、左、右 top_size,bottom_size,left_size,right_size = (70,70,70,70) 复制法,复制最边缘的像素 replicate = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_R...
蓝牙模块HM-10手册
蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。
opencv学习三
Mat的构造函数第三节介绍,原博文+自己的少部分填充: Mat::eye 返回一个恒等指定大小和类型矩阵。 C++: static MatExpr Mat::eye(int rows, int cols, inttype) C++: static MatExpr Mat::eye(Size size, int type) 参数 rows –的行数。 cols– 的列数。 siz
学习opencv_学习笔记三
第四章 细说HighGUI 一个可移植的图形工具包 由以下三部分组成: 硬件部分 文件部分 图形用户界面 1创建窗口 所用到函数: /* create window 创建窗口*/ CVAPI(int) cvNamedWindow( const char* name, //窗口名称 int flags CV_DEFAULT(CV_WINDOW_AUTOSIZE) );//根据
OpenCv3编程学习三
1.首先知道了源码的存放位置: xx位置/opencv/sources/samples/cpp 2.修改对应的彩色目标追踪,把对应的cpp文件放入到一个新建的项目中,开始运行。 代码如下: #include <opencv2/core/utility.hpp> #include "opencv2/video/tracking.hpp" #include "opencv2/imgproc.hpp" #include "opencv2/videoio.hpp" #include "opencv2/h
openCV学习(三)提取图像中的矩形区域
改编自 https://segmentfault.com/a/1190000013925648 原文是c++版,我改成了python版,供大家参考学习。 主要思想:边缘检测—》轮廓检测—》找出最大的面积的轮廓—》找出顶点—》投影变换 import numpy as np import cv2 # 这个成功的扣下了ppt白板 srcPic = cv2.imread('2345.jpg') lengt...
【OpenCV】Mango的OpenCV学习笔记【三】
本文主要参考自 OpenCV官方文档 一、色彩空间 HSV ① 色调(H),取值范围:[0, 179] ② 饱和度(S),取值范围:[0, 255] ③ 明亮度(V),取值范围:[0, 255] 色彩空间转换import cv2 import numpy as np img = cv2.imread("../../Resources/cctv2.jpg") # 转换为HSV色彩空间 hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # 利用cv2.inRange.
Opencv学习三
1.图像的读取可以添加参数。其分别如下: cv2.IMREAD_COLOR:彩色图像 cv2.IMREAD_GRAYSCALE:灰度图像 我们来测试一下读取灰度图像的,还有其结果。 import cv2 #opencv读取的格式是BGR import matplotlib.pyplot as plt import numpy as np img=cv2.imread('cat.jpg', cv2.IMREAD_GRAYSCALE) print(img) print(img.shape) #输
opencv学习记录(三)
因为需要学习,所以系统的过一遍注:到这一篇,opencv部分的流程过了一般,下一篇将开始PyTorch课程的流程。
《学习OpenCV》 - 初探OpenCV(三)
基本数据类型 白色矩形 void cvRectangle( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int line_type=8, int shift=0 ); 参数1:图像; 参数2:矩形的一个顶点 参数3:矩形另一个顶点 参数4:线条颜色...
关于opencv的学习(三)
学习轮廓检测和模版匹配中遇到的问题(目前还没有更好的解决方法)
8755



被折叠的 条评论
为什么被折叠?



