- 博客(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
3535
原创 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
531
原创 启动 Activity 并返回结果
要完成的效果如下:在页面一输入一个值传递到页面二,然后页面二可以传回一个值到页面一。首先,页面一传递的代码:public class MainActivity extends AppCompatActivity { EditText data; #获取输入值 Button btn; #获取按钮 TextView tt; #获取显示框 @Override protected void onCreate(Bundle savedInsta.
2020-10-22 21:55:10
415
原创 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
205
原创 一键访问网络
一、 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
163
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
310
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
552
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
332
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
1860
原创 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
190
原创 进度条 / 拖动条
一、进度条选择 Widgets 里的 ProgressBar , 即为进度条(分为水平进度条和圆形进度条)参数:android:progress="50" —— 当前进度android:max="100" —— 最大参数android:visibility="visible" —— 是否可见二、拖动条...
2020-09-28 10:12:15
626
原创 单选框 / 复选框
单选框:使用 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
438
原创 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
253
原创 状态资源 / 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
148
原创 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
228
原创 线性布局
安卓中的线性布局主要分为垂直和水平两个方向。这里以登录界面为例。一:创建项目后,默认布局不是线性布局,所以要把全局布局改成线性布局<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
394
原创 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
2912
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
501
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
623
原创 Keras机器视觉小tip——以垃圾分类为例
垃圾分类的目标是,对于给出的图片进行分类,所以需要一个分类网络。一。首先了解一下数据集点开dataset-resized看一下,这里将所有的图片分成六个类别:除了图片的放置与命名,再来看一下标注文件:TIP 1:介绍一下python中的glob库glob是python自己带的一个文件操作相关模块,用它可以查找符合自己目的的文件,就类似于Windows下的文件搜索,支持通配符操作,*,?,[]这三个通配符,*代表0个或多个字符,?代表一个字符,[]匹配指定范围内的字符.
2020-06-15 21:24:25
1395
原创 Keras创建一个简单的模型
Keras创建一个模型的步骤如下:(一)模型定义。定义模型的结构(二)模型编译。指定损失函数和优化器,并调用模型的compile() 函数,完成模型编译(三)训练模型。通过调用模型的fit() 函数来训练模型(四)模型预测。调用模型的evaluate() 或者predicr() 等函数对新数据进行预测定义模型的三种方法:1.# 方式一: 使用 .add() 方法将各层添加到模型中# 导入相关包from keras.models import Sequentialfr.
2020-06-15 15:28:35
674
原创 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
785
原创 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
1120
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
671
原创 Opencv获取形态学梯度
求图像梯度有很多方法,这里记录一下形态学梯度的方法。求图像的梯度可以在图像增强时起到作用。这里https://blog.youkuaiyun.com/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
462
原创 开闭操作
开操作:先腐蚀后膨胀 作用:删除小的干扰块闭操作:先膨胀后腐蚀先看一下开操作的运用:应用一:去除背景杂线首先将图片处理成二值图像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
286
原创 基于梯度的霍夫圆检测
基于梯度的霍夫圆检测原理 略直接看代码一、首先读取一张图片,处理成灰度图。并对其做滤波降噪,因为霍夫圆检测是对噪声敏感的。这里用到的降噪方法一般是用保留边缘的滤波。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
820
原创 霍夫直线检测
霍夫直线检测的原理 略直接上代码:一、首先导入图片,并进行高斯滤波降噪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
885
原创 寻找月亮
目标:用图像投影的方法来寻找超简单的图案步骤一:模糊后转化成灰度图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
385
原创 点多边形测试
目标:基于轮廓与边缘的参考,计算图像中每个像素点到最近轮廓的距离,生成距离系数图像。应用场景:对象跟踪时,可以判断一个点或对象是否在指定区域内首先需要获取几何图像的轮廓: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
352
原创 距离变换
距离变换是二值图像处理的常用手段,在骨架提取、图像窄化中经常用到。距离变换后得到的是与输入图像类似的灰度图,越远离背景边缘灰度值越大(越亮)。常用的算法有:欧几里得距离(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
545
原创 获取图像的角度、中心点信息
使用到以下两个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
1283
原创 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
1155
原创 连通组件扫描
介绍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
312
原创 全局阈值和自适应阈值
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
4572
原创 二值图像
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
535
原创 区块链笔记(更新中)
一、加密的性质:collision resistance :尽量使他不发生哈希碰撞,即不能人为地高效的找出产生碰撞地输入。hiding :不能从加密后的结果倒推出输入值。(有个疑问:ai是否能通过处理大数据找出因果从而倒推呢,GAN的是否既可作加密也可作解密呢?)puzzle friendly : 不能很快地找出在某个输出值附近的输入,只能不断地去尝试nouce。所以挖矿地过程可以证明工作量。所以挖矿很难,验证很容易(difficult to solve , but easy to veri
2020-05-18 22:16:23
514
原创 两数之和
题目:给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。解法一:暴力法class Solution {public: vector<int> twoSum(vector<int>& nums...
2020-05-06 19:15:30
142
原创 Mxnet(四)
总结一些CNN里的经典网络架构:一、批量归一化(batch normalization)batch_norm是一种可以使较深的神经网络能容易训练的一种方法。一般放在仿射变换和激活函数之间。????(BN(????))他的实现代码如下:import utils as d2lfrom mxnet import autograd, gluon, init, ndfrom mxnet....
2020-04-21 20:55:43
389
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人