有哪些网站可以免费做外销/seo站内优化教程
一、OpenCV基础
(一)图像的读取、显示、创建
https://mp.weixin.qq.com/s?__biz=MzA4MTA1NjM5NQ==&mid=2247485202&idx=1&sn=05d0b4cd25675a99357910a5f2694508&chksm=9f9b80f6a8ec09e03ab2bb518ea6aad83db007c9cdd602c7459ed75c737e380ac9c34bc0d614&scene=178&cur_album_id=2073041855356764164#rd
(二)图像的属性以及像素相关的操作
https://mp.weixin.qq.com/s?__biz=MzA4MTA1NjM5NQ==&mid=2247485234&idx=1&sn=64c4a7235bd02a49d844089a84e6a01d&chksm=9f9b80d6a8ec09c029a387bbdeea3f8f7ecbc31e9032da047b6e77cf0394f272ada897c10f3b&scene=178&cur_album_id=2073041855356764164#rd
data:表示 Mat 对象中的指针(uchar 类型的指针),指向内存中存放矩阵数据的一块内存 (uchar* data)。
step: 字面意思是“步长”,实际上它描述了矩阵的形状。 step[] 为一个数组,矩阵有几维,step[] 数组就有几个元素。以一个三维矩阵为例,step[0] 表示一个平面的字节总数,step[1] 表示一行元素的字节总数,step[2] 表示每一个元素的字节总数。
上面两个数据可以配合使用来获得Mat中任意位置的数据
(三)threshold函数的使用
https://blog.csdn.net/u012566751/article/details/77046445
图像的二值化就是将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效果。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。OpenCV中提供了函数cv::threshold();
(四)形态学之提取连通域
https://mp.weixin.qq.com/s?__biz=Mzg3NjY3NjI0Mw==&mid=2247484975&idx=1&sn=5ea64c7c4dd3c017eac0551f12c45137&chksm=cf2fd3d3f8585ac5b6e59f313a42d8981b8d09721f88eea7ee4a71ecfae7baeacf69fb0e1ec2&mpshare=1&scene=1&srcid=1030Tal3VDLygpiUNPLo45zv&sharer_shareinfo=84ef8c16db4fd26fa08ad0259bcc4dce&sharer_shareinfo_first=84ef8c16db4fd26fa08ad0259bcc4dce#rd
1.连通域概念:指图像中具有相同像素值且位置相邻的像素组成的区域。
2.相关函数:
int connectedComponents(InputArray image, OutputArray labels, int connectivity = 8, int ltype = CV_32S);image:输入图像,待标记8位单通道图像。
labels:输出图像,目标标记图像。
connectivity:连通域大小,四连通域还是八连通域。
输出类型:CV32S 和 CV_16U ,默认是 CV_32S 。
返回连通域个数。
例子:
#include <opencv2/opencv.hpp>
#include <iostream>int main()
{cv::Mat input = cv::imread("src/rice.jpg");cv::Mat img_bw, connectimg;cv::cvtColor(input, img_bw, cv::COLOR_BGR2GRAY);cv::threshold(img_bw, img_bw, 100, 255, cv::THRESH_BINARY_INV);// 做一些膨胀和腐蚀使得图像连通域明显cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(5, 5));cv::erode(img_bw, img_bw, element, cv::Point(-1, -1), 2);cv::dilate(img_bw, img_bw, element, cv::Point(-1, -1), 2);int num = cv::connectedComponents(img_bw, connectimg, 8, CV_16U);std::cout << "连通域个数:" << num << std::endl;cv::namedWindow("原图", cv::WINDOW_NORMAL);cv::imshow("原图", img_bw);//以不同颜色标记出不同的连通域cv::Mat result = cv::Mat::zeros(img_bw.size(), CV_8UC3); //定义标记结果图像//定义五种颜色std::vector<cv::Vec3b> color;color.push_back(cv::Vec3b(0, 0, 255));color.push_back(cv::Vec3b(0, 255, 0));color.push_back(cv::Vec3b(255, 0, 0));color.push_back(cv::Vec3b(0, 255, 255));color.push_back(cv::Vec3b(255, 255, 0));for (int i = 0; i < result.cols; i ++){for (int j = 0; j < result.rows; j ++){int label = connectimg.at<uint16_t>(i, j);if (label == 0){continue; //背景的黑色不改变}result.at<cv::Vec3b>(i, j) = color[label % 5];}}cv::namedWindow("标记连通域后", cv::WINDOW_NORMAL);cv::imshow("标记连通域后", result);cv::waitKey(0);return 0;
}
原始图片和更改颜色后的连通域:
(五)距离变换distanceTransform应用——查找物体质心&&细化字符轮廓
https://www.cnblogs.com/mtcnn/p/9411967.html
distanceTransform方法的功能:
用于计算图像中每一个非零点距离离自己最近的零点的距离,distanceTransform的第二个Mat矩阵参数dst保存了每一个点与最近的零点的距离信息,图像上越亮的点,代表了离零点的距离越远。
1、查找物体质心
C++
#include "core/core.hpp"
#include "imgproc/imgproc.hpp"
#include "highgui/highgui.hpp"using namespace cv;int main(int argc,char *argv[])
{float maxValue=0; //定义距离变换矩阵中的最大值Point Pt(0,0);Mat image=imread(argv[1]);Mat imageGray;cvtColor(image,imageGray,CV_RGB2GRAY);imageGray=~imageGray; //取反GaussianBlur(imageGray,imageGray,Size(5,5),2); //滤波threshold(imageGray,imageGray,20,200,CV_THRESH_BINARY); //阈值化 Mat imageThin(imageGray.size(),CV_32FC1); //定义保存距离变换结果的Mat矩阵distanceTransform(imageGray,imageThin,CV_DIST_L2,3); //距离变换Mat distShow;distShow=Mat::zeros(imageGray.size(),CV_8UC1); //定义细化后的字符轮廓for(int i=0;i<imageThin.rows;i++){for(int j=0;j<imageThin.cols;j++){distShow.at<uchar>(i,j)=imageThin.at<float>(i,j);if(imageThin.at<float>(i,j)>maxValue){maxValue=imageThin.at<float>(i,j); //获取距离变换的极大值Pt=Point(j,i); //坐标}}}normalize(distShow,distShow,0,255,CV_MINMAX); //为了显示清晰,做了0~255归一化circle(image,Pt,maxValue,Scalar(0,0,255),3); circle(image,Pt,3,Scalar(0,255,0),3);imshow("Source Image",image);imshow("Thin Image",distShow);waitKey();return 0;
}
1).原始图片:
2).经过距离变换后距离Mat矩阵dst:
为了显示清晰,做了0~255的归一化。可以看到,中心处最亮,说明了中心点距离零点的距离最远,而最远处就可以作为物体的质心。
3).标记质心(绿色点):
2、细化轮廓
C++:
#include "core/core.hpp"
#include "imgproc/imgproc.hpp"
#include "highgui/highgui.hpp"using namespace cv;int main(int argc,char *argv[])
{float maxValue=0; //定义距离变换矩阵中的最大值Mat image=imread(argv[1]);Mat imageGray;cvtColor(image,imageGray,CV_RGB2GRAY);imageGray=~imageGray; //取反GaussianBlur(imageGray,imageGray,Size(5,5),2); //滤波threshold(imageGray,imageGray,20,200,CV_THRESH_BINARY); //阈值imshow("s",imageGray);Mat imageThin(imageGray.size(),CV_32FC1); //定义保存距离变换结果的Mat矩阵distanceTransform(imageGray,imageThin,CV_DIST_L2,3); //距离变换Mat distShow;distShow=Mat::zeros(imageGray.size(),CV_8UC1); //定义细化后的字符轮廓for(int i=0;i<imageThin.rows;i++){for(int j=0;j<imageThin.cols;j++){if(imageThin.at<float>(i,j)>maxValue){maxValue=imageThin.at<float>(i,j); //获取距离变换的极大值}}}for(int i=0;i<imageThin.rows;i++){for(int j=0;j<imageThin.cols;j++){if(imageThin.at<float>(i,j)>maxValue/1.9){distShow.at<uchar>(i,j)=255; //符合距离大于最大值一定比例条件的点设为255}}}imshow("Source Image",image);imshow("Thin Image",distShow);waitKey();return 0;
}
1.原始图像:
2.细化效果:
二、 形态学操作之腐蚀与膨胀
https://blog.csdn.net/qq_42856191/article/details/123663533
(一)腐蚀(erosion)
1.1 什么是腐蚀
简单来说,腐蚀就是把图像中的物体变小了!(用背景去侵蚀前景)
腐蚀的工作过程如下图所示,A是一个集合,B是一个结构单元,我们使用B去对集合A进行腐蚀,腐蚀过程如C所示,在腐蚀过程中,结构单元必须全部位于集合A中才能进行腐蚀操作,最终得到的结果即为D所示。
Python:
import cv2
import numpy as npori = cv2.imread(r"C:\Users\Lenovo\Desktop\original.jpg") # 读取图像kernel1 = np.ones((3, 3), np.uint8) # 3个不同尺度的腐蚀单元
kernel2 = np.ones((5, 5), np.uint8)
kernel3 = np.ones((7, 7), np.uint8)erosion1 = cv2.erode(ori, kernel1) # 腐蚀函数
erosion2 = cv2.erode(ori, kernel2)
erosion3 = cv2.erode(ori, kernel3)cv2.imshow("original", ori)
cv2.imshow("erosion1", erosion1)
cv2.imshow("erosion2", erosion2)
cv2.imshow("erosion3", erosion3)cv2.imwrite(r'C:\Users\Lenovo\Desktop\erosion1.jpg', erosion1)
cv2.imwrite(r'C:\Users\Lenovo\Desktop\erosion2.jpg', erosion2)
cv2.imwrite(r'C:\Users\Lenovo\Desktop\erosion3.jpg', erosion3)cv2.waitKey()
下面展示的是程序得到的结果图,由图可知,腐蚀能对图像中的毛刺进行去除,但这也与腐蚀单元的大小有关,3 × 3 3×33×3大小的核去除效果不如5 × 5 5×55×5与7 × 7 7×77×7,此外7 × 7 7×77×7的核使得图像变得更加细小。
(二)膨胀(dilation)
2.1 什么是膨胀
简单来说,膨胀就是把图像中的物体变大了!(对前景进行膨胀)
膨胀的工作过程如下图所示,A是一个集合,B是一个结构单元,我们使用B去对集合A进行膨胀,膨胀过程如C所示,在膨胀过程中,结构单元只要有一个位于集合A中就能进行膨胀操作,最终得到的结果即为D所示。
Python:
import cv2
import numpy as npori = cv2.imread(r"C:\Users\Lenovo\Desktop\original.jpg") # 读取图像kernel1 = np.ones((3, 3), np.uint8) # 3个不同尺度的腐蚀单元
kernel2 = np.ones((5, 5), np.uint8)
kernel3 = np.ones((9, 9), np.uint8)dilation1 = cv2.dilate(ori, kernel1) # 膨胀函数
dilation2 = cv2.dilate(ori, kernel2)
dilation3 = cv2.dilate(ori, kernel3)cv2.imshow("original", ori)
cv2.imshow("dilation1", dilation1)
cv2.imshow("dilation2", dilation2)
cv2.imshow("dilation3", dilation3)cv2.imwrite(r'C:\Users\Lenovo\Desktop\dilation1.jpg', dilation1)
cv2.imwrite(r'C:\Users\Lenovo\Desktop\dilation2.jpg', dilation2)
cv2.imwrite(r'C:\Users\Lenovo\Desktop\dilation3.jpg', dilation3)cv2.waitKey()
下面展示的是程序得到的结果图,由图可知,膨胀能对图像中的物体进行扩张,但这也与膨胀单元的大小有关,越大的膨胀核使得图像扩张区域更大。
三、形态学操作之开运算与闭运算
https://blog.csdn.net/qq_42856191/article/details/123670455
(一)开运算
1.1 什么是开运算:先腐蚀后膨胀的操作称为开运算。
1.2作用:消除细小物体、在窄区域分离物体、平滑大物体边界等。
(二)闭运算
2.1 什么是闭运算:先膨胀后腐蚀的操作称为闭运算。
2.2作用:填充物体空洞、消除噪声、连接邻近物体、平滑边界等。
四、图像分割 – 距离变换与分水岭算法(硬币检测、扑克牌检测、车道检测)
https://blog.csdn.net/great_yzl/article/details/119831771
以上述引用中的硬币检测为例子的分割过程:
1.将RGB图片转换为灰度图
2.去噪
开运算:先侵蚀后膨胀。会将两个物体之间可能存在的粘连噪点过滤,并将前景物体扩大。
3.确定背景区域
对图片进行膨胀操作,将前景扩大,背景也会随之减小。那么此时对象>原对象,此时背景 < 原背景,那么此时的背景自然可以确定为原背景的一部分。(离对象中心很远的是背景)
4.确定前景区域
原理:距离变换,在二值图中把对象缩小,得到的就是原图的一部分,可以确定为前景。
这种距离变换可以将前景中的不同实例分离,距离变换后得到前景物体不同灰度值的像素,通过threshold函数选定一个阈值来缩小前景物体中每个的大小,从而达到将不同实例分离的效果。(不分离的话,可以不用距离变换,只用腐蚀就够了)
下图分别为img原始图片、opening膨胀后的图片、sure_fg距离变换后经过threshold阈值操作获得的确定前景实例
相关文章:

OpenCV学习笔记
一、OpenCV基础 (一)图像的读取、显示、创建 https://mp.weixin.qq.com/s?__bizMzA4MTA1NjM5NQ&mid2247485202&idx1&sn05d0b4cd25675a99357910a5f2694508&chksm9f9b80f6a8ec09e03ab2bb518ea6aad83db007c9cdd602c7459ed75c737e380ac9c3…...

idea 一键部署jar包
上传成功...

16、SpringCloud -- 常见的接口防刷限流方式
目录 接口防刷限流方式1:隐藏秒杀地址需求:思路:代码:前端:后端:测试:总结:方式2:图形验证码1、生成图形验证码需求:思路:代码:前端:后端:测试:2、校验验证码需求:思路:代码:...

Typora(morkdown编辑器)的安装包和安装教程
Typora(morkdown编辑器)的安装包和安装教程 下载安装1、覆盖文件2、输入序列号①打开 typora ,点击“输入序列号”:②邮箱一栏中任意填写(但须保证邮箱地址格式正确),输入序列号,点击…...

服务器不稳定对网站有什么影响
世界上最远的距离,不是树枝无法相依,而是相互了望的星星,却没有交汇的轨迹。 现代技术的进步,导致了人与人之间距 离的消除,直播行业的快速发展的影响和渗透进如今的日常生活,为人们在遥远的距离相见与互诉…...

py实现surf特征提取
import cv2def main():# 加载图像image1 cv2.imread(image1.jpg, cv2.IMREAD_GRAYSCALE)image2 cv2.imread(image2.jpg, cv2.IMREAD_GRAYSCALE)# 创建SURF对象surf cv2.xfeatures2d.SURF_create()# 检测特征点和描述符keypoints1, descriptors1 surf.detectAndCompute(imag…...

MS39233三个半桥驱动器可兼容TMC6300
MS39233 是一款低压三个半桥驱动器。可兼容 TMC6300(功能基本一致,管脚不兼容)。它可应用于低电压及电池供电的运动控制场合。并且内置电荷泵来提供内部功率 NMOS 所需的栅驱动电压。 MS39233 可以提供最高 2.8A 的峰值电流,其功率…...

09、SpringCloud -- 利用redis的原子性控制高并发请求访问到service层、本地标识
目录 利用redis的原子性控制请求问题:需求:思路什么是原子性的操作?代码思路:代码:工具类依赖SeckillGoodControllerSeckillOrderInfoController测试:本地标识的分析和实现问题:需求:思路:代码:测试:利用redis的原子性控制请求 利用redis的原子性控制人数请求访问到…...

竞赛选题 深度学习图像修复算法 - opencv python 机器视觉
文章目录 0 前言2 什么是图像内容填充修复3 原理分析3.1 第一步:将图像理解为一个概率分布的样本3.2 补全图像 3.3 快速生成假图像3.4 生成对抗网络(Generative Adversarial Net, GAN) 的架构3.5 使用G(z)生成伪图像 4 在Tensorflow上构建DCGANs最后 0 前言 &#…...

基于深度学习网络的美食检测系统matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 % 图像大小 image_size [224 224 3]; num_classes size(VD,2)-1;% 目标类别数量…...

人工智能基础_机器学习006_有监督机器学习_正规方程的公式推导_最小二乘法_凸函数的判定---人工智能工作笔记0046
我们来看一下公式的推导这部分比较难一些, 首先要记住公式,这个公式,不用自己理解,知道怎么用就行, 比如这个(mA)T 这个转置的关系要知道 然后我们看这个符号就是求X的导数,X导数的转置除以X的导数,就得到单位矩阵, 可以看到下面也是,各种X的导数,然后计算,得到对应的矩阵结…...

【MongoDB】Windows 安装MongoDB 6.0
一、下载安装包 安装包下载地址https://www.mongodb.com/try/download/community这里我选择的是 二、解压并安装 1、解压 这里我将压缩包解压到了D盘,并重命名成了mongodb,解压后的目录如下: 2、创建配置文件 在D:\mongodb下新建conf目录…...

DM8 Dokcer镜像更新后远程无法jdbc连接问题
背景:原来官网下的dm8docker镜像有效期只有两个星期,问他们商务申请了新的dm8镜像,准备简单升级一下镜像再引入原来的database 先说结论:jdbc驱动要更新 官网dm8驱动链接地址 原来的tag镜像 dm8_single:v8.1.2.128_ent_x86_64…...

AI:39-基于深度学习的车牌识别检测
🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌本专栏包含以下学习方向: 机器学习、深度学…...

软考 系统架构设计师系列知识点之系统架构评估(1)
所属章节: 第8章. 系统质量属性与架构评估 第2节. 系统架构评估 1. 概述 系统架构评估是在对架构分析、评估的基础上,对架构策略的选取进行决策。它利用数学或逻辑分析技术,针对系统的一致性、正确性、质量属性、规划结果等不同方面&#x…...

Spark UI中Shuffle dataSize 和shuffle bytes written 指标区别
背景 本文基于Spark 3.1.1 目前在做一些知识回顾的时候,发现了一些很有意思的事情,就是Spark UI中ShuffleExchangeExec 的dataSize和shuffle bytes written指标是不一样的, 那么在AQE阶段的时候,是以哪个指标来作为每个Task分区大…...

Java——Map.getOrDefault方法详解
Java——Map.getOrDefault方法详解 Map.getOrDefault(Object key, V defaultValue)是Java中Map接口的一个方法,用于获取指定键对应的值,如果键不存在,则返回一个默认值。 该方法的签名如下: V getOrDefault(Object key, V defau…...

银河集团香港优才计划95分获批案例展示!看看是如何申请的?
银河集团香港优才计划95分获批案例展示!看看是如何申请的? 今天来分享一则银河集团香港优才计划获批案例!客户本科学历非名校、从事业务支援及人力资源行业,优才打分95分,这个条件可能在很多人的印象里,会觉…...

Python class中以`_`开头的类特殊方法
在学基础的时候没学到过(可能见过但是又忘了),在学习深度学习项目的时候遇见了很多; 以论文Multi-label learning from single positive label为例; 这些方法都是程序自行调用的,不需要(也不可以…...

2023云栖大会开幕:全球数万开发者参会,展现AI时代的云计算创新
10月31日,2023云栖大会在杭州开幕,大会吸引全球数万开发者参会。阿里巴巴集团董事会主席蔡崇信在致辞中表示,今年云栖大会主题回归“计算,为了无法计算的价值”,这也是2015年云栖大会的主题,当时云计算支撑…...

[量化投资-学习笔记004]Python+TDengine从零开始搭建量化分析平台-EMA均线
在之前的文章中用 Python 直接计算的 MA 均线,但面对 EMA 我认怂了。 PythonTDengine从零开始搭建量化分析平台-MA均线的多种实现方式 高数是我们在大学唯一挂过的科。这次直接使用 Pandas 库的 DataFrame.ewm 函数,便捷又省事。 并且用 Pandas 直接对之…...

KaiwuDB 获山东省工信厅“信息化应用创新优秀解决方案”奖
10月23日,山东省工信厅正式公示《2023年山东省信息化应用创新典型应用案例及优秀解决方案名单》,面向全省、全国重点推荐山东省技术水平先进、应用示范效果突出、产业带动性强的信息化解决方案及应用实践,对于进一步激发山东省信息技术产业创…...

Python-常用的量化交易代码片段
算法交易正在彻底改变金融世界。通过基于预定义标准的自动化交易,交易者可以以闪电般的速度和比以往更精确的方式执行订单。如果您热衷于深入了解算法交易的世界,本指南提供了帮助您入门的基本代码片段。从获取股票数据到回溯测试策略,我们都能满足您的需求! 1. 使用 YFina…...

Netty优化-rpc
Netty优化-rpc 1.3 RPC 框架1)准备工作 1.3 RPC 框架 1)准备工作 这些代码可以认为是现成的,无需从头编写练习 为了简化起见,在原来聊天项目的基础上新增 Rpc 请求和响应消息 Data public abstract class Message implements …...

【Docker 内核详解】cgroups 资源限制(一):概念、作用、术语
cgroups 资源限制(一):概念、作用、术语 1.cgroups 是什么2.cgroups 的作用3.cgroups 术语表 当谈论 Docker 时,常常会聊到 Docker 的实现方式。很多开发者都知道,Docker 容器本质上是宿主机上的进程(容器所…...

MATLAB——一维小波的多层分解
%% 学习目标:一维小波的多层分解 clear all; close all; load noissin.mat; xnoissin; [C,L]wavedec(x,3,db4); % 3层分解,使用db4小波 [cd1,cd2,cd3]detcoef(C,L,[1,2,3]); % 使用detcoef函数获取细节系数 ca3appcoef(C,L,db4,3); …...

C++的拷贝构造函数
目录 拷贝构造函数一、为什么用拷贝构造二、拷贝构造函数1、概念2、特征1. 拷贝构造函数是构造函数的一个重载形式。2. 拷贝构造函数的参数3. 若未显式定义,编译器会生成默认的拷贝构造函数。4. 拷贝构造函数典型调用场景 拷贝构造函数 一、为什么用拷贝构造 日期…...

【手机端远程连接服务器】安装和配置cpolar+JuiceSSH:实现手机端远程连接服务器
文章目录 1. Linux安装cpolar2. 创建公网SSH连接地址3. JuiceSSH公网远程连接4. 固定连接SSH公网地址5. SSH固定地址连接测试 处于内网的虚拟机如何被外网访问呢?如何手机就能访问虚拟机呢? cpolarJuiceSSH 实现手机端远程连接Linux虚拟机(内网穿透,手机端连接Linux虚拟机) …...

Jupyter Notebook的使用
文章目录 Jupyter Notebook一、Jupyter Notebook是什么?二、使用步骤1.安装Miniconda2.安装启动**Jupyter Notebook**3.一些问题 三、Jupyter Notebook的操作1.更换解释器2.在指定的文件夹中打开3 运行的快捷键 四.报错解决1.画图的时候出现报错2.画图的时候空白3.p…...

vue 使用vue-office预览word、excel,pdf同理
在此,我只使用了docx和excel, pdf我直接使用的iframe进行的展示就不作赘述了 //docx文档预览组件 npm install vue-office/docx//excel文档预览组件 npm install vue-office/excel//pdf文档预览组件 npm install vue-office/pdf如果是vue2.6版本或以下还…...