自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 收藏
  • 关注

原创 爬虫数据存入数据库

将爬虫获取的数据存入数据库,需要在pipeline里完成。一、默认的项目是将pipeline的功能关闭了,这里我们先在settings.py中打开。其中设置里可以增加多个操作,后面的数字代表操作的先后顺序。ITEM_PIPELINES = { 'qidian_hot.pipelines.QidianHotPipeline': 300,}二、首先打开SQLyog,新建一张表。并在 settings.py 里写入有关数据库的信息:MYSQL_DB_NAME = "qidian"MY

2020-12-03 20:56:03 3462

原创 Scrapy之Item

在上一篇的基础上,将数据存储的字典进行改进。将获取到的内容存到 item 中。一、在 items.py 文件夹下的类中添加列表名import scrapyclass QidianHotItem(scrapy.Item): # define the fields for your item here like: name = scrapy.Field() author = scrapy.Field() type = scrapy.Field() state

2020-12-03 17:01:03 480

原创 Scrapy

一、创建项目在命令行里进入到创建项目的文件夹,输入命令 scrapy startproject 项目名

2020-12-03 14:54:18 255

原创 启动 Activity 并返回结果

要完成的效果如下:在页面一输入一个值传递到页面二,然后页面二可以传回一个值到页面一。首先,页面一传递的代码:public class MainActivity extends AppCompatActivity { EditText data; #获取输入值 Button btn; #获取按钮 TextView tt; #获取显示框 @Override protected void onCreate(Bundle savedInsta.

2020-10-22 21:55:10 368

原创 Activity 之间传递数据

一、注册界面,布局略二、注册界面的 java 部分将注册的用户名和密码内容放入 intent 中,并传递到对应页面的 class 。public class MainActivity extends AppCompatActivity { EditText user; EditText psw; Button login; Button quit; @Override protected void onCreate(Bundle savedI

2020-10-13 15:53:50 157

原创 一键访问网络

一、 xml 界面 <EditText android:id="@+id/editText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" android:hint

2020-10-12 21:48:13 115 1

原创 一键拨号

一、在 xml 界面插入一张拨打电话的图片<ImageView android:id="@+id/imageView2" android:layout_width="wrap_content" android:layout_height="wrap_content" app:srcCompat="@mipmap/ic_launcher" tools:ignore="MissingConstraints"

2020-10-12 20:47:55 256 1

原创 开启、关闭activity

一个 xml 页面一般对应一个 java 脚本。新建一个 activity 时会同时生成一个对应的 xml 页面。首先,在主页面设置一个按钮: <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="点击" app:lay

2020-10-11 21:16:30 510 2

原创 SimpleAdapter 简单适配器

要实现这样一个效果:一、 xml 部分加入一个 listview <ListView android:divider="@drawable/blue" android:id="@+id/listview1" android:dividerHeight="20dp" android:layout_width="match_parent" android:layout_height="match_par

2020-10-11 17:02:39 294 1

原创 输入自动补齐

一、在 xml 中插入一个自动补齐的 text 框 <AutoCompleteTextView android:id="@+id/autoCompleteTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:completionThreshold="3" # 设置打

2020-10-10 19:19:07 1812

原创 RatingBar 星级评分条

首先在 xml 上 引入一个评分条,可以从 Design 里的 Widgets 中添加 RatingBar <RatingBar android:id="@+id/ratingBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="5"

2020-10-08 16:09:05 151

原创 进度条 / 拖动条

一、进度条选择 Widgets 里的 ProgressBar , 即为进度条(分为水平进度条和圆形进度条)参数:android:progress="50" —— 当前进度android:max="100" —— 最大参数android:visibility="visible" —— 是否可见二、拖动条...

2020-09-28 10:12:15 566

原创 单选框 / 复选框

单选框:使用 design 中的 RadioGroup ,然后加入 RadioButton 。xml 界面: <RadioGroup android:id="@+id/radioGroup" android:layout_width="match_parent" android:layout_height="match_parent" > <RadioButton

2020-09-27 16:47:39 365

原创 tog

一、toggleButtom 点击切换事件首先,在前端放置一个按钮和图片: <ToggleButton android:id="@+id/toggleButton" android:textOn="@string/open" *需要设置开启时文字 android:textOff="@string/close" *设置关闭时文字 android:layout_width="wra

2020-09-22 17:10:24 208

原创 状态资源 / toast

首先在 drawable 文件夹下新建一个 drawable resourse file 。然后在文件中定义不同状态下的显示方式。例:<item android:color="#00ff00" android:state_focused="true"></item> —— 当获取光标时,颜色为绿<item android:color="#000000" android:state_focused="false"></item> —— ..

2020-09-21 16:27:03 112

原创 listveiw 和 spinner

一、listview : 列表界面在 legacy 下选择 listviewandroid:divider="@drawable/blue" —— 分隔图片android:dividerHeight="10dp" —— 分割图片的高度内容方面,需要先在 strings.xml 中用 <string-array name = "xxx"> 来设置列表内容,然后引用。引用:android:entries="@array/item"strings.xm

2020-09-20 19:04:15 192

原创 线性布局

安卓中的线性布局主要分为垂直和水平两个方向。这里以登录界面为例。一:创建项目后,默认布局不是线性布局,所以要把全局布局改成线性布局<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"二、这个登录界面可以看作是整体为垂直的布局,其中包含了三个水平的布局可以从design界面直接

2020-09-17 16:53:10 348

原创 SKlearn之决策树

决策树是一种非参数的监督学习方法。模块:Sklearn.treesklearn建模的步骤:1、选择并建立模型 例:clf = tree.DecisionTreeClassifier()2、提供数据训练模型 例:clf = clf.fit(X_train,y_train)3、获取需要的信息 例:result = clf.score(X_test,y_test)分类树中的参数:一、criterioncriterion是用来决定不纯度的计算方法,不纯度越低,拟合效...

2020-06-18 00:30:53 2646 1

原创 视频颜色追踪

在图像处理时,学习过绿幕抠图,放在视频里也是一样的。一、首先需要将图片转换成HSV格式hsv = cv.cvtColor(frame,cv.COLOR_BGR2HSV)二、然后根据HSV中的色彩阈值表,将我们想要的对象提取出来这里我来提取一个绿色,可以看到绿色的区域是(35,43,46)(77,255,255)mask = cv.inRange(hsv,(35,43,46),(77,255,255))三、完整的代码如下:def color_object_trace():

2020-06-16 17:08:27 433 1

原创 视频背景分析

使用的方法:KNN(机器学习)、GMM(概率分析)目标:对于一个视频,区分出他的背景和前景(行人、船只等)用到的api是:cv.createBackgroundSubtractorMOG2() 或 cv.createBackgroundSubtractorKNN()def video_io_demo(): capture = cv.VideoCapture(0) bgfg = cv.createBackgroundSubtractorMOG2() bgfg1

2020-06-15 23:19:58 535

原创 Keras机器视觉小tip——以垃圾分类为例

垃圾分类的目标是,对于给出的图片进行分类,所以需要一个分类网络。一。首先了解一下数据集点开dataset-resized看一下,这里将所有的图片分成六个类别:除了图片的放置与命名,再来看一下标注文件:TIP 1:介绍一下python中的glob库glob是python自己带的一个文件操作相关模块,用它可以查找符合自己目的的文件,就类似于Windows下的文件搜索,支持通配符操作,*,?,[]这三个通配符,*代表0个或多个字符,?代表一个字符,[]匹配指定范围内的字符.

2020-06-15 21:24:25 1297

原创 Keras创建一个简单的模型

Keras创建一个模型的步骤如下:(一)模型定义。定义模型的结构(二)模型编译。指定损失函数和优化器,并调用模型的compile() 函数,完成模型编译(三)训练模型。通过调用模型的fit() 函数来训练模型(四)模型预测。调用模型的evaluate() 或者predicr() 等函数对新数据进行预测定义模型的三种方法:1.# 方式一: 使用 .add() 方法将各层添加到模型中# 导入相关包from keras.models import Sequentialfr.

2020-06-15 15:28:35 633

原创 OpenCV实时人脸检测

介绍一种实现人脸识别最简单的调包方法。这里的人脸分类原理:使用级联分类器这里我们只使用opencv封装好的api 。一、首先在github官网上下载用于识别的分类器地址:https://github.com/opencv/opencv/tree/master/data 这里的haar和lbp数据文件都是可以使用的,我先下载到本地。这里的分类器都是可以使用的。我们就选择其中一个来使用。二、代码如下1.读取视频def video_io_demo(): ...

2020-06-13 14:16:07 728

原创 OpenCV视频读写与处理

一、基础的视频读写从本地读取视频:capture = cv.VideoCapture("D:/pythonTest/img/flower.mp4")获取视频的各个参数:height = capture.get(cv.CAP_PROP_FRAME_HEIGHT)weight = capture.get(cv.CAP_PROP_FRAME_WIDTH)count = capture.get(cv.CAP_PROP_FRAME_COUNT) #帧数fps = capture.get(c

2020-06-12 19:31:58 978 1

原创 顶帽与黑帽&

一、顶帽与黑帽顶帽:原图减去开操作后的结果黑帽:闭操作的结果减去原图顶帽黑帽的作用:提取图像中微小有用的信息块首先将图片处理成二值图:src = cv.imread("D:/pythonTest/img/15.jpg")gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)cv.imshow("

2020-06-12 16:15:56 621

原创 Opencv获取形态学梯度

求图像梯度有很多方法,这里记录一下形态学梯度的方法。求图像的梯度可以在图像增强时起到作用。这里https://blog.csdn.net/saltriver/article/details/78987096有部分说明。我又用了大幂幂的美照,嘻嘻~ 原图:一、使用形态学中的膨胀和腐蚀,选择(3,3)矩形作为模板src = cv.imread("D:/pythonTest/img/1.jpg")cv.imshow("src", src)k = cv.getStructuringEle.

2020-06-11 23:04:41 425

原创 开闭操作

开操作:先腐蚀后膨胀 作用:删除小的干扰块闭操作:先膨胀后腐蚀先看一下开操作的运用:应用一:去除背景杂线首先将图片处理成二值图像src = cv.imread("D:/pythonTest/img/16.jpg")gray = cv.cvtColor(src,cv.COLOR_BGR2GRAY)ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY_INV|cv.THRESH_OTSU)cv.imshow("binary",b.

2020-06-11 22:14:51 263

原创 基于梯度的霍夫圆检测

基于梯度的霍夫圆检测原理 略直接看代码一、首先读取一张图片,处理成灰度图。并对其做滤波降噪,因为霍夫圆检测是对噪声敏感的。这里用到的降噪方法一般是用保留边缘的滤波。src = cv.imread("D:/pythonTest/img/11.jpg")gray = cv.cvtColor(src,cv.COLOR_BGR2GRAY)gray = cv.fastNlMeansDenoising(gray,None,15,10,30)cv.imshow("input",src)我用的是这张

2020-06-11 18:06:53 763

原创 霍夫直线检测

霍夫直线检测的原理 略直接上代码:一、首先导入图片,并进行高斯滤波降噪src = cv.imread("D:/pythonTest/img/9.jpg")cv.imshow("input",src)src = cv.GaussianBlur(src,(3,3),0)我用的是这幅图:二、获取图像的轮廓#获取边缘edges = cv.Canny(src,150,300,apertureSize=3)cv.imshow("edges",edges)获取边缘后如下..

2020-06-10 23:12:25 843

原创 寻找月亮

目标:用图像投影的方法来寻找超简单的图案步骤一:模糊后转化成灰度图src = cv.imread("D:/pythonTest/img/8.jpg")#cv.imshow("input",src)src1 = cv.GaussianBlur(src,(3,3),0)gray = cv.cvtColor(src1,cv.COLOR_BGR2GRAY)步骤二:转化为二值图像ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.

2020-06-07 17:14:32 346

原创 点多边形测试

目标:基于轮廓与边缘的参考,计算图像中每个像素点到最近轮廓的距离,生成距离系数图像。应用场景:对象跟踪时,可以判断一个点或对象是否在指定区域内首先需要获取几何图像的轮廓:contours, hierachy = cv.findContours(dst, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)然后计算出每个像素距离轮廓的距离:dist_flag = cv.pointPolygonTest(contours[i],(col,row),True).

2020-05-28 21:53:00 314

原创 距离变换

距离变换是二值图像处理的常用手段,在骨架提取、图像窄化中经常用到。距离变换后得到的是与输入图像类似的灰度图,越远离背景边缘灰度值越大(越亮)。常用的算法有:欧几里得距离(L2 norm)、曼哈顿距离(L1 norm)、棋盘格距离(L1 ∞)算法的具体实现略。介绍一个api :cv.distanceTransform(dst,cv.DIST_L1,5,dstType=cv.CV_8U)cv.DIST_L1 要与 CV_8U 相配cv.DIST_L2要与 CV_32F相配...

2020-05-28 21:03:25 513

原创 获取图像的角度、中心点信息

使用到以下两个api:cv.moments(contours[i]) #他是一个字典类型(x,y),(a,b),degree = cv.fitEllipse(contours[i])代码如下:def contours_gem_demo(): src = cv.imread("D:/pythonTest/img/6.jpg") cv.imshow("input", src) src = cv.GaussianBlur(src, (3, 3), 0) gr

2020-05-26 19:20:46 1223

原创 Opencv 绘制轮廓

OpenCV里对一个图片绘制轮廓,需要用到两个API:cv.findContours(dst,cv.RETR_TREE,cv.CHAIN_APPROX_SIMPLE) 这里需要输入的是一个二值图,这里的RETR_TREE会绘制出内外的轮廓,如果改成RETR_EXTERNAL就只会绘制出外轮廓cv.drawContours(src,contours,i,(0,0,0),10,8) 这是绘制出轮廓代码如下:def find_contours_demo(): src = cv.i

2020-05-25 16:11:48 1085

原创 连通组件扫描

介绍OpenCV里的寻找连通器的api——connectedComponents(src,connectivity=8,ltype=cv.CV_32S)他会返回连通的数量和连通的标签数组:def connected_components_demo(): src = cv.imread("D:/pythonTest/img/2.jpg") cv.imshow("input",src) src = cv.GaussianBlur(src,(3,3),0) grey

2020-05-25 15:09:48 267

原创 全局阈值和自适应阈值

1、均值法计算图片的色彩平均值,然后大于阈值的设置为255,小于阈值的设置为0。2、OTSU通过寻找类内最小方差:即先将图像按照色彩画出直方图。按色彩值分成两个大类,使每个类的方差最小。3、三角法代码如下:def binary_segmetation_demo(): src = cv.imread("D:/pythonTest/img/1.jpg",cv.IMREAD_GRAYSCALE) cv.imshow("input",src) ret,dst = c

2020-05-23 17:27:27 4466

原创 二值图像

Threshold()的用法:输入的是一个灰度图。阈值可以手动给出也可以由算法寻找到。maxval == 255 。ret,dst = cv.threshold(src,127,255,cv.THRESH_BINARY)注意有两个接收值。参数分别为(灰度图、阈值、最大值、二值分割方法)可以用trackbar来调整阈值:import cv2 as cvimport numpy as npdef do_nothing(values): print(values)def

2020-05-22 17:20:12 496

原创 区块链笔记(更新中)

一、加密的性质:collision resistance :尽量使他不发生哈希碰撞,即不能人为地高效的找出产生碰撞地输入。hiding :不能从加密后的结果倒推出输入值。(有个疑问:ai是否能通过处理大数据找出因果从而倒推呢,GAN的是否既可作加密也可作解密呢?)puzzle friendly : 不能很快地找出在某个输出值附近的输入,只能不断地去尝试nouce。所以挖矿地过程可以证明工作量。所以挖矿很难,验证很容易(difficult to solve , but easy to veri

2020-05-18 22:16:23 467

原创 两数之和

题目:给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。解法一:暴力法class Solution {public: vector<int> twoSum(vector<int>& nums...

2020-05-06 19:15:30 118

原创 Mxnet(四)

总结一些CNN里的经典网络架构:一、批量归一化(batch normalization)batch_norm是一种可以使较深的神经网络能容易训练的一种方法。一般放在仿射变换和激活函数之间。????(BN(????))他的实现代码如下:import utils as d2lfrom mxnet import autograd, gluon, init, ndfrom mxnet....

2020-04-21 20:55:43 349

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除