OpenCV函数返回的简单问题

下面是一个OpenCV的小程序:

 #include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

template<typename _Tp>
vector<_Tp> convertMat2Vector(const Mat &_t1f)
{
    //_t1f.convertTo(t1f, CV_64F);
    return (vector<_Tp>)(_t1f.reshape(1, 1));//通道数不变,按行转为一行
}


template<typename _Tp>
cv::Mat convertVector2Mat(vector<_Tp> v,int cn,int rows)
{
    cv::Mat mat = cv::Mat(v);//将vector变成一列的mat
    cv::Mat dest=mat.reshape(cn, rows);
    cout << "dest=\n" << dest << endl;
    return dest;
}


int main()

{
    int arr[4][3] = { { 1, 1,1 },{ 2, 2,2 },{ 3, 3,3 },{ 4,4, 4 } };
    cv::Mat srcData(4, 3, CV_8UC1, arr);
    cout << "srcData=\n"<< srcData<< endl;
    vector<uchar> v = convertMat2Vector<uchar>(srcData);
    cv::Mat dest =convertVector2Mat<uchar>(v,1, 4);//函数里的dest和还回dest的结果为什么不一样的呀?
    cout << "dest=\n" << dest << endl;



    system("pause");
    waitKey();
    return 0;
}

运行结果:
图片说明

问题是:各位大神啊,我这哪里出问题?为什么函数里的dest和还回的dest的结果值为什么不一样的呀?

4个回答

因为第2个方法的mat对象会释放,而dest引用的数据是来自于mat,并没有拷贝数据,因此在mat没有释放的情况下是正常的,
之后引用的内存就被释放而成为野数据。另外你srcData也不对。修改如下:

 #include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

template<typename _Tp>
vector<_Tp> convertMat2Vector(const Mat &_t1f)
{
    //_t1f.convertTo(t1f, CV_64F);
    return (vector<_Tp>)(_t1f.reshape(1, 1));//通道数不变,按行转为一行
}


template<typename _Tp>
cv::Mat convertVector2Mat(vector<_Tp> v,int cn,int rows)
{
    cv::Mat mat = cv::Mat(v);//将vector变成一列的mat
    cv::Mat dest=mat.reshape(cn, rows).clone();
    cout << "dest=\n" << dest << endl;
    return dest;
}


int main()

{
    char arr[4][3] = { {1, 1, 1 },{ 2, 2, 2 },{ 3, 3, 3 },{ 4, 4, 4 } };
    cv::Mat srcData(4, 3, CV_8UC1, arr);
    cout << "srcData=\n"<< srcData<< endl;
    vector<uchar> v = convertMat2Vector<uchar>(srcData);
    cout << v.size() << endl;
    cv::Mat dest =convertVector2Mat<uchar>(v,1, 4);//函数里的dest和还回dest的结果为什么不一样的呀?
    cout << "dest=\n" << dest << endl;

    system("pause");
    waitKey();
    return 0;
}

return dest1;
cv::Mat dest2 =convertVector2Mat
这句话的执行顺序是:
1、默认构造DEST2
2、以DEST1为源,赋值(operater=) 给DEST2
3、析构DEST1
不过大部份编译器为将其优化为:
1、以DEST1为源,拷贝构造给DEST2
2、析构DEST1

所以原因应该是CV:MAT未定义合适的拷贝构造函数所致。

如是这个原因,还会发生更有趣的事情:
在convertVector2Mat函数内部增加如下代码:
cv::Mat dest=mat.reshape(cn, rows);
cout << "dest=\n" << dest << endl;
cv::Mat dest2=dest
cout << "dest2=\n" << dest2 << endl;
这两个结果都应该不一样了。

解决办法有两个:
1、定义合适的拷贝构造函数与赋值函数。
2、改变实现形式,不再靠return赋值,而将结果能过 指针或引用 的参数返回。

我试了几次,如果convertVector2Mat里面是这样设置dest,可以返回:
Mat dest = (Mat_(4, 3) << 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4);
但如果这样设置,就返回不了:
int arr[4][3] = { { 1, 1, 1 }, { 2, 2, 2 }, { 3, 3, 3 }, { 4, 4, 4 } };
cv::Mat dest(4, 3, CV_8UC1, arr);
跟mat.reshape(cn, rows);是一个效果
我觉得应该跟动态分配有关系,这个是在接口内做的,建议你涉及动态分配的这些函数还是别用返回值来做。

输出如下:

srcData=
[  1,   1,   1;
   2,   2,   2;
   3,   3,   3;
   4,   4,   4]
12
dest=
[  1,   1,   1;
   2,   2,   2;
   3,   3,   3;
   4,   4,   4]
dest=
[  1,   1,   1;
   2,   2,   2;
   3,   3,   3;
   4,   4,   4]

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如何快速查阅openCV的函数作用和使用方法?

才开始学习使用openCV进行图像处理,但是在GitHub上看的程序很多openCV函数都不熟悉,导致读懂程序有很大的阻力,想问问各位前辈有没有什么方法可以快速的查阅到openCV具体函数的使用方法。

哪位有openCV函数手册,要chm格式的,求下载链接。

如题。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

OpenCV函数cvCreateTrackbar的问题

![图片说明](https://img-ask.csdn.net/upload/201602/14/1455417362_242509.png) 这个cvCreateTrackbar函数在使用的时候为什么一旦拖动“帧”就能改变函数变量“value”,即使是当我把cvCreateTrackbar写在程序开始,程序执行到后面的时候,拖动“帧”就能回到cvCreateTrackbar函数,然后value发生改变,程序再继续执行?我在后面的代码中又没有使用回调函数,怎么莫名奇妙就回到前面去单独只执行cvCreateTrackbar函数?这是一种什么机制?

关于opencv回调函数形参的问题

``` #include<iostream> #include<opencv2/opencv.hpp> #include<stdlib.h> using namespace cv; using namespace std; // 定义全局变量 cv::Mat img_Original; cv::Mat img_Ranged; cv::Mat img_Median; // 定义回调函数 void on_low_height_thresh_trackbar(int, void*); void on_high_height_thresh_trackbar(int, void*); int low_height = 50, high_height = 85; int main() { img_Original = cv::imread("ROI1.jpg", 0); cv::medianBlur(img_Original, img_Median, 5); // 创建窗口 cv::namedWindow("original image"); cv::namedWindow("selected image"); // 创建回调函数进度条 cv::createTrackbar("Low height", "selected image", &low_height, 255, on_low_height_thresh_trackbar); cv::createTrackbar("High height", "selected image", &high_height, 255, on_high_height_thresh_trackbar); // 显示图像 cv::imshow("original image", img_Original); on_low_height_thresh_trackbar(low_height, 0); on_high_height_thresh_trackbar(high_height, 0); cv::waitKey(0); return 0; } // 定义回调函数 void on_low_height_thresh_trackbar(int, void*) { low_height = cv::min(high_height - 1, low_height); cv::setTrackbarPos("Low height", "selected image", low_height); // 选取阈值 cv::inRange(img_Median, low_height, high_height, img_Ranged); // 显示图像 cv::imshow("selected image", img_Ranged); } void on_high_height_thresh_trackbar(int, void*) { high_height = cv::max(high_height, low_height + 1); cv::setTrackbarPos("High height", "selected image", high_height); // 选取阈值 cv::inRange(img_Median, low_height, high_height, img_Ranged); // 显示图像 cv::imshow("selected image", img_Ranged); } ``` void on_low_height_thresh_trackbar(int, void*) void on_high_height_thresh_trackbar(int, void*) 在这两个函数中int,void*这两个形参都没有出现,那么设置这两个形参是为什么呢?

opencv3.4.4 + vs2017:opencv函数,类,命名空间全部报错

我已经配置好了所有的opencv的包含文件、库文件、输入链接,可是我允许程序的时候 所有的opencv函数、类、还有命名空间cv都报错,这是为什么呢 ![图片说明](https://img-ask.csdn.net/upload/201812/21/1545395841_69587.jpg)

opencv中的kmeans聚类算法函数

请问各位,如果想要把opencv中的k-means函数部分扒出来(就是自己改写一下kmeans函数,不用opencv的时候也能用),需要opencv里的那些文件呀,实在source文件下modules中的吗![![图片说明](https://img-ask.csdn.net/upload/201703/03/1488535283_543914.png)图片说明](http://img.ask.csdn

opencv中的kmeans函数

LBPimage是一个3通道的灰度图像。通过kmeans函数之后,分的两类,labels的各个分量都是0,只有第一个和最后一个元素是1.请问大神们,错在哪里。 Mat LBPimage=LBP(imgs); int nl = LBPimage.rows; int nc = LBPimage.cols; Mat points; points.create(nc*nl, 1, CV_32FC1); int n = 0; for (int i = 0; i < nl; i++) { for (int j = 0; j < nc; j++) { points.at<int>(n,0) = (int)LBPimage.at<Vec3b>(i, j)[0]; n++; } } Mat labels; Mat centers; kmeans(points, 2, labels, TermCriteria(CV_TERMCRIT_EPS,10000,0.01), 50, KMEANS_PP_CENTERS, centers);

opencv里main函数参数问题

#include "highgui.h" #include "stdio.h" int main(int argc, char** argv) { IplImage *img = cvLoadImage(argv[1]); cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE); cvShowImage("Example1", img); cvWaitKey(0); cvReleaseImage(&img); cvDestroyWindow("Example1"); return 0; } 为什么生成的时候通过了,但是调试运行的时候出现中断(VS2013),在CMD里输入的路径和图片名称也不好使,提示程序出现了错误。希望行家给菜鸟解释一下

Qt5+VS2010+OpenCV关于函数声明的问题

这是我的程序目录,![图片说明](https://img-ask.csdn.net/upload/201510/28/1446000347_713672.png) 我在qt5video.cpp文件中写了一个函数 ![图片说明](https://img-ask.csdn.net/upload/201510/28/1446000448_642649.png) 请问怎么在qt5video.h头文件中 ![图片说明](https://img-ask.csdn.net/upload/201510/28/1446000382_895196.png) 哪个部分怎么样声明这个函数,才能使qt5video.cpp文件中IplImage *FindCountours(IplImage* src,IplImage *pContourImg)这个函数的内部正常使用Qt5中的控件ui.textEdit->insertPlainText("333333"); ui.label->setText("Yes");,现在是不识别,错误提示如下: ![图片说明](https://img-ask.csdn.net/upload/201510/28/1446000403_758540.png) 在改为IplImage* QT5video::FindCountours(IplImage* src,IplImage *pContourImg)之后依然有错误, ![图片说明](https://img-ask.csdn.net/upload/201510/28/1446019212_310786.png)

关于opencv中提取轮廓函数findContours的问题

Mat img0 = imread(filename, 1); // img0----CV_8UC3 cvtColor(img0, gray, COLOR_BGR2GRAY); // gray----CV_8UC1 gray = Scalar::all(0); /*检测轮廓*/ findContours(gray, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE); 将上面第二行和第三行改成 :Mat gray(img0.size(),CV_8UC1,Scalar::all(0)); 再用下面的检测轮廓函数检测出的contours一直为0 怎么回事?请大神们指教!

opencv中的imread函数问题

为什么使用imread函数时候,第二个参数的设置会最终影响是否能读入图片?比如jpg的用1的时候可以,用0的时候就说内存泄漏?但是用0不应该是强制转换成灰度图像?这真的必须按规定值使用吗?

opencv2.4.9中kmeans函数

求一段完整代码,测试opencv中的k-means函数。 我装的是opencv2.4.9,与其他版本有什么不同吗,函数在opencv中的位置一样吗

Opencv 调用自带的人脸识别还是函数createLBPHFaceRecognizer问题

Opencv 调用自带的人脸识别还是函数createLBPHFaceRecognizer问题, images.push_back(imread("H:\\4\\20.jpg", CV_LOAD_IMAGE_GRAYSCALE)); //CV_LOAD_IMAGE_GRAYSCALE labels.push_back(0); images.push_back(imread("H:\\4\\20_1.jpg", CV_LOAD_IMAGE_GRAYSCALE)); //CV_LOAD_IMAGE_GRAYSCALE labels.push_back(1); Ptr<FaceRecognizer> model = createLBPHFaceRecognizer();//createEigenFaceRecognizer、createFisherFaceRecognizer、createLBPHFaceRecognizer model->train(images, labels); `` 运行到train后,报错,说什么src和labels的数量不一致,????求大神解答啊

求助OpenCV人脸识别相关函数问题?

1.OpenCV关于特征脸方法中, 2.用Ptr<BasicFaceRecognizer> model = EigenFaceRecognizer::create();创建模型后, 定义完参数类型后,model->predict(testSample,predictedLabel,confidence);报错,显示没有与参数列表匹配的实例,这是为什么啊,如果用错了,那该用什么得到人脸识别结果的置信率呢?

Opencv calcBackProject函数参数问题

calcBackProject(&_image,1,channels,hist,result_BackProject,range,255.0,true); 请问这段代码的参数255.0是什么意思?我看有的帖子写的是1.0。但是我的整个程序里1.0的时候是报错的。255.0才能正确运行。

OpenCV3.0保存函数到文件的问题,

文件保存一直在一起出现错误,只显示错误行,但没有提示何种错误

在用opencv中resize函数时遇到的问题。

``` import cv2 import numpy as np a = np.array([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]]) orign = a.copy() cv_r = cv2.resize(a, None,fx = 0.5,fy = 0.5,interpolation=cv2.INTER_LINEAR) ``` 为了测试下resize的作用,自己敲了上述代码,会出现下面的错误: ``` error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\imgproc\src\resize.cpp:3863: error: (-215:Assertion failed) func != 0 in function 'cv::hal::resize' ``` 望高手解答

opencv undistort函数里面需要用的畸变系数矩阵的单位应该是什么呢?

我有用halcon标定的相机参数,畸变系数K1,K2,K3,P1,P2,然后用opencv处理同一张照片去畸变的时候,输入进halcon标定得到的参数,无法去除畸变,请问有人遇到过类似情况么,应该如何解决,我看halcon得到的畸变系数都是带单位的,是因为这个的问题么?

Opencv imread函数参数的问题

想动态读入图片,利用dlg.GetPathName()得到图片的路径,然后想得到选择的图片的Mat格式,但是imread好像对Cstring格式的路径不支持啊! 希望大神能帮个忙!

程序员的兼职技能课

获取讲师答疑方式: 在付费视频第一节(触摸命令_ALL)片头有二维码及加群流程介绍 限时福利 原价99元,今日仅需39元!购课添加小助手(微信号:csdn590)按提示还可领取价值800元的编程大礼包! 讲师介绍: 苏奕嘉&nbsp;前阿里UC项目工程师 脚本开发平台官方认证满级(六级)开发者。 我将如何教会你通过【定制脚本】赚到你人生的第一桶金? 零基础程序定制脚本开发课程,是完全针对零脚本开发经验的小白而设计,课程内容共分为3大阶段: ①前期将带你掌握Q开发语言和界面交互开发能力; ②中期通过实战来制作有具体需求的定制脚本; ③后期将解锁脚本的更高阶玩法,打通任督二脉; ④应用定制脚本合法赚取额外收入的完整经验分享,带你通过程序定制脚本开发这项副业,赚取到你的第一桶金!

Windows版YOLOv4目标检测实战:训练自己的数据集

课程演示环境:Windows10; cuda 10.2; cudnn7.6.5; Python3.7; VisualStudio2019; OpenCV3.4 需要学习ubuntu系统上YOLOv4的同学请前往:《YOLOv4目标检测实战:训练自己的数据集》 课程链接:https://edu.csdn.net/course/detail/28745 YOLOv4来了!速度和精度双提升! 与 YOLOv3 相比,新版本的 AP (精度)和 FPS (每秒帧率)分别提高了 10% 和 12%。 YOLO系列是基于深度学习的端到端实时目标检测方法。本课程将手把手地教大家使用labelImg标注和使用YOLOv4训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。 本课程的YOLOv4使用AlexyAB/darknet,在Windows系统上做项目演示。包括:安装软件环境、安装YOLOv4、标注自己的数据集、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算)和先验框聚类分析。还将介绍改善YOLOv4目标检测性能的技巧。 除本课程《Windows版YOLOv4目标检测实战:训练自己的数据集》外,本人将推出有关YOLOv4目标检测的系列课程。请持续关注该系列的其它视频课程,包括: 《Windows版YOLOv4目标检测实战:人脸口罩佩戴检测》 《Windows版YOLOv4目标检测实战:中国交通标志识别》 《Windows版YOLOv4目标检测:原理与源码解析》

lena全身原图(非256*256版本,而是全身原图)

lena全身原图(非256*256版本,而是全身原图) lena原图很有意思,我们通常所用的256*256图片是在lena原图上截取了头部部分的256*256正方形得到的. 原图是花花公子杂志上的一个

快速入门Android开发 视频 教程 android studio

这是一门快速入门Android开发课程,顾名思义是让大家能快速入门Android开发。 学完能让你学会如下知识点: Android的发展历程 搭建Java开发环境 搭建Android开发环境 Android Studio基础使用方法 Android Studio创建项目 项目运行到模拟器 项目运行到真实手机 Android中常用控件 排查开发中的错误 Android中请求网络 常用Android开发命令 快速入门Gradle构建系统 项目实战:看美图 常用Android Studio使用技巧 项目签名打包 如何上架市场

Java调用微信支付

Java 使用微信支付 一. 准备工作 1.

汽车租赁管理系统需求分析规格说明书

汽车租赁管理系统需求分析规格说明书,这只是一个模板,如果有不会的可以借鉴一下,还是蛮详细的。。。。

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

程序员的算法通关课:知己知彼(第一季)

【超实用课程内容】 程序员对于算法一直又爱又恨!特别是在求职面试时,算法类问题绝对是不可逃避的提问点!本门课程作为算法面试系列的第一季,会从“知己知彼”的角度,聊聊关于算法面试的那些事~ 【哪些人适合学习这门课程?】 求职中的开发者,对于面试算法阶段缺少经验 想了解实际工作中算法相关知识 在职程序员,算法基础薄弱,急需充电 【超人气讲师】 孙秀洋&nbsp;| 服务器端工程师 硕士毕业于哈工大计算机科学与技术专业,ACM亚洲区赛铜奖获得者,先后在腾讯和百度从事一线技术研发,对算法和后端技术有深刻见解。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27272 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程无限观看时长,但是大家可以抓紧时间学习后一起讨论哦~

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

Python入门视频精讲

Python入门视频培训课程以通俗易懂的方式讲解Python核心技术,Python基础,Python入门。适合初学者的教程,让你少走弯路! 课程内容包括:1.Python简介和安装 、2.第一个Python程序、PyCharm的使用 、3.Python基础、4.函数、5.高级特性、6.面向对象、7.模块、8.异常处理和IO操作、9.访问数据库MySQL。教学全程采用笔记+代码案例的形式讲解,通俗易懂!!!

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

太惨了,面试又被吊打

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

Java62数据提取代码

利用苹果手机微信下面的wx.data文件提取出62数据,通过62可以实现不同设备直接登陆,可以通过文件流的方式用脚本上传到服务器进行解析

Python代码实现飞机大战

文章目录经典飞机大战一.游戏设定二.我方飞机三.敌方飞机四.发射子弹五.发放补给包六.主模块 经典飞机大战 源代码以及素材资料(图片,音频)可从下面的github中下载: 飞机大战源代码以及素材资料github项目地址链接 ————————————————————————————————————————————————————————— 不知道大家有没有打过飞机,喜不喜欢打飞机。当我第一次接触这个东西的时候,我的内心是被震撼到的。第一次接触打飞机的时候作者本人是身心愉悦的,因为周边的朋友都在打飞机, 每

2018年全国大学生计算机技能应用大赛决赛 大题

2018年全国大学生计算机技能应用大赛决赛大题,程序填空和程序设计(侵删)

Lena图像处理测试专业用图,高清完整全身原图

Lena图像处理测试专业用图,高清完整全身原图,该图片很好的包含了平坦区域、阴影和纹理等细节,这些都有益于测试各种不同的图像处理算法。它是一幅很好的测试照片!其次,由于这是一个非常有魅力女人的照片。

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

verilog实现地铁系统售票

使用 verilog 实现地铁售票

Python+OpenCV计算机视觉

Python+OpenCV计算机视觉系统全面的介绍。

Python可以这样学(第四季:数据分析与科学计算可视化)

董付国老师系列教材《Python程序设计(第2版)》(ISBN:9787302436515)、《Python可以这样学》(ISBN:9787302456469)配套视频,在教材基础上又增加了大量内容,通过实例讲解numpy、scipy、pandas、statistics、matplotlib等标准库和扩展库用法。

150讲轻松搞定Python网络爬虫

【为什么学爬虫?】 &nbsp; &nbsp; &nbsp; &nbsp;1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到! &nbsp; &nbsp; &nbsp; &nbsp;2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 &nbsp; 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑

获取Linux下Ftp目录树并逐步绑定到treeview

在linux下抓取目录树,双击后获取该节点子节点(逐步生成)。另外有两个类,一个是windows下的(一次性获取目录树),一个是linux下的(足部获取目录树)

YOLOv3目标检测实战系列课程

《YOLOv3目标检测实战系列课程》旨在帮助大家掌握YOLOv3目标检测的训练、原理、源码与网络模型改进方法。 本课程的YOLOv3使用原作darknet(c语言编写),在Ubuntu系统上做项目演示。 本系列课程包括三门课: (1)《YOLOv3目标检测实战:训练自己的数据集》 包括:安装darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 (2)《YOLOv3目标检测:原理与源码解析》讲解YOLOv1、YOLOv2、YOLOv3的原理、程序流程并解析各层的源码。 (3)《YOLOv3目标检测:网络模型改进方法》讲解YOLOv3的改进方法,包括改进1:不显示指定类别目标的方法 (增加功能) ;改进2:合并BN层到卷积层 (加快推理速度) ; 改进3:使用GIoU指标和损失函数 (提高检测精度) ;改进4:tiny YOLOv3 (简化网络模型)并介绍 AlexeyAB/darknet项目。

手把手实现Java图书管理系统(附源码)

【超实用课程内容】 本课程演示的是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群。详细介绍了图书管理系统的实现,包括:环境搭建、系统业务、技术实现、项目运行、功能演示、系统扩展等,以通俗易懂的方式,手把手的带你从零开始运行本套图书管理系统,该项目附带全部源码可作为毕设使用。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27513 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长,大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化

微信小程序开发实战之番茄时钟开发

微信小程序番茄时钟视频教程,本课程将带着各位学员开发一个小程序初级实战类项目,针对只看过官方文档而又无从下手的开发者来说,可以作为一个较好的练手项目,对于有小程序开发经验的开发者而言,可以更好加深对小程序各类组件和API 的理解,为更深层次高难度的项目做铺垫。

Java 最常见的 200+ 面试题:面试必备

这份面试清单是从我 2015 年做了 TeamLeader 之后开始收集的,一方面是给公司招聘用,另一方面是想用它来挖掘在 Java 技术栈中,还有那些知识点是我不知道的,我想找到这些技术盲点,然后修复它,以此来提高自己的技术水平。虽然我是从 2009 年就开始参加编程工作了,但我依旧觉得自己现在要学的东西很多,并且学习这些知识,让我很有成就感和满足感,那所以何乐而不为呢? 说回面试的事,这份面试...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

微信小程序 实例汇总 完整项目源代码

微信小程序 实例汇总 完整项目源代码

基于西门子S7—1200的单部六层电梯设计程序,1部6层电梯

基于西门子S7—1200的单部六层电梯设计程序,1部6层电梯。 本系统控制六层电梯, 采用集选控制方式。 为了完成设定的控制任务, 主要根据电梯输入/输出点数确定PLC 的机型。 根据电梯控制的要求,

相关热词 c#中如何设置提交按钮 c#帮助怎么用 c# 读取合并单元格的值 c#带阻程序 c# 替换span内容 c# rpc c#控制台点阵字输出 c#do while循环 c#调用dll多线程 c#找出两个集合不同的
立即提问