用opencv处理摄像头数据显示卡顿 40C

需求是使用海康威视的摄像头调用opencv库来完成移动物体检测的功能
,然后我while循环里面使用videocapture.read()和imshow()来读取和显示帧,没有问题,但是使用getStructuringElement,erode之类处理图片后显示会特别卡并且会越来越卡 最后就是会崩溃显示以下错误,用海康SDK不会出现崩溃问题 但一样很卡 求大神解答!!!
图片说明

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
用opencv调用摄像头,然后根据视频图像变化,获得摄像头运动轨迹可以怎么做?
用opencv调用摄像头,然后根据视频图像变化,获得摄像头运动轨迹可以怎么做?最好有程序
QT中使用opencv打开摄像头
我是按照一篇帖子上写的编得一个打开摄像头显示视频的程序,但是不知道为什么显示错误![错误提示](https://img-ask.csdn.net/upload/201602/26/1456490510_417338.png)
opencv把摄像头显示在picture控件上的同时还能在显示在窗口上吗?
opencv把摄像头显示在picture控件上的同时还能在显示在窗口上吗?弄了好久都没出来
python-opencv无法打开摄像头
在linux下,使用python无法打开摄像头,第一次编译程序是没有任何反映,第二次就显示libv4l2: error setting pixformat: Device or resource busy HIGHGUI ERROR: libv4l unable to ioctl S_FMT libv4l2: error setting pixformat: Device or resource busy libv4l1: error setting pixformat: Device or resource busy libv4l2: error setting pixformat: Device or resource busy libv4l1: error setting pixformat: Device or resource busy HIGHGUI ERROR: libv4l unable to ioctl VIDIOCSPICT 这种错误,此后一直显示资源繁忙。但是使用opencv能够正常的打开摄像头。以下是python的程序import cv2 import numpy as np cap = cv2.VideoCapture(0) while(1): # get a frame ret, frame = cap.read() # show a frame cv2.imshow('capture', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() 求大神帮忙解决,没有人有类似的问题吗
opencv能打开什么摄像头,一般的工业摄像头怎么打开?是不是只要能在电脑上用的都能打开?
最近才刚开始看opencv的知识,以前也没有接触过工业摄像头,我想知道opencv对能打开的摄像头有什么要求,是不是只要能在电脑上显示的摄像头就能在opencv中打开?想请各位专业大神指教指教。谢谢
Linux下使用opencv打开摄像头后无法彻底关闭摄像头
Linux下使用opencv调用cvCreateCameraCapture打开摄像头后,使用cvReleaseCapture无法彻底关闭摄像头,摄像头上的灯还亮着。只有退出程序才能关闭。如果不退出的话,再次调用cvCreateCameraCapture后就无法获取图像,出现 VIDIOC_STREAMON: 错误的文件描述符。初次接触opencv,不是很了解。
笔记本opencv调用手机摄像头
如何用笔记本opencv编程调用手机摄像头 1、笔记本可以用蓝牙连接手机调用摄像头吗?要如何做?(需要什么驱动编程还是什么软件?) 2、用数据线连接手机调用?(需要什么驱动编程还是什么软件?) 谢谢大家~
opencv调用摄像头进行矩形检测,release模式下无法出现摄像头画面?
在debug模式下可以正常运行 release下也编译通过 ``` #include<opencv2/opencv.hpp> using namespace cv; using namespace std; double getAngle(Point pt1, Point pt2, Point pt0) { double dx1 = pt1.x - pt0.x; double dy1 = pt1.y - pt0.y; double dx2 = pt2.x - pt0.x; double dy2 = pt2.y - pt0.y; return (dx1*dx2 + dy1*dy2) / sqrt((dx1*dx1 + dy1*dy1)*(dx2*dx2 + dy2*dy2) + 1e-10); } bool isYellowSquare(Mat image_H, vector<Point> square) { int pointX[4]; int pointY[4]; for (int i = 0; i < 4; i++) { pointX[i] = square[i].x; pointY[i] = square[i].y; } for (int i = 0; i < 4; i++) { for (int j = 0; j < 3 - i; j++) { if (pointX[j] > pointX[j + 1]) { int tx = pointX[j]; pointX[j] = pointX[j + 1]; pointX[j + 1] = tx; } if (pointY[j] > pointY[j + 1]) { int ty = pointY[j]; pointY[j] = pointY[j + 1]; pointY[j + 1] = ty; } } } Rect rect(pointX[0], pointY[0], pointX[3] - pointX[0] + 1, pointY[3] - pointY[0] + 1); Mat roImg(image_H, rect); int count = 0; for (int i = 0; i<roImg.rows; i++) { uchar* data = roImg.ptr<uchar>(i); for (int j = 0; j<roImg.cols; j++) { if (data[j] == 0) count += 1; } } if (count>0.8*((roImg.cols*roImg.rows)/2 + (pointX[2]-pointX[1]+1)*(pointY[2]-pointY[1]+1)/2)) return true; else return false; } bool getSquarePts(const Mat image, vector<vector<Point> >& squares) { bool isGetSquares = false; squares.clear(); //数组清空 Mat pyr, gray0, gray, grayImg; Mat imageHSV, image_H; cvtColor(image, grayImg, CV_RGB2GRAY); cvtColor(image, imageHSV, CV_BGR2HSV); //将image转到HSV空间 image_H.create(imageHSV.size(), imageHSV.depth()); //定义与imageHSV同尺寸和深度的图像image_H int ch1[] = { 0, 0 }; mixChannels(&imageHSV, 1, &image_H, 1, ch1, 1); //将imageHSV的H层复制到image_H for (int i = 0; i < image_H.rows; i++) { uchar* data = image_H.ptr<uchar>(i); for (int j = 0; j < image_H.cols; j++) { if (data[j] >= 10 && data[j] <= 40) data[j] = 0; else data[j] = 255; } } pyrDown(grayImg, pyr, Size(image.cols / 2, image.rows / 2)); pyrUp(pyr, gray0, image.size()); Canny(gray0, gray, 0, 50, 3); dilate(gray, gray, Mat(), Point(-1, -1)); for (int i = 0; i < gray.rows; i++) { uchar* data1 = gray.ptr<uchar>(i); uchar* data2 = image_H.ptr<uchar>(i); for (int j = 0; j < gray.cols; j++) { if (data1[j] == 255) data2[j] = 255; } } vector<vector<Point> > contours; findContours(image_H, contours, CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE); //对image_H进行处理,将检测出的每个轮廓(相互独立)以点集(拐点)的形式存储到contours中 vector<Point> approx; //存储矩形4个顶点的坐标的数组 for (size_t i = 0; i < contours.size(); i++) { approxPolyDP(Mat(contours[i]), approx, arcLength(Mat(contours[i]), true)*0.02, true);//输出封闭的多边形顶点点集 //判断是否为四边形等条件 if (approx.size() == 4 && fabs(contourArea(Mat(approx))) > 1000 && isContourConvex(Mat(approx))) { double maxCosine = 0; for (int j = 2; j < 5; j++) { double cosine = fabs(getAngle(approx[j % 4], approx[j - 2], approx[j - 1])); //计算夹角余弦值 maxCosine = MAX(maxCosine, cosine); } //如果三个夹角余弦值都小于0.3则说明是矩形,并存储矩形 if (maxCosine < 0.3&&isYellowSquare(image_H, approx)) { squares.push_back(approx); isGetSquares = true; } } } /*if (squares.size()>1) { vector<Point>center; vector<int>item; int d; for (int i = 0; i<squares.size(); i++) { Point point; point.x = (squares[i][0].x + squares[i][2].x) / 2; point.y = (squares[i][0].y + squares[i][2].y) / 2; center.push_back(point); } for (int i = 0; i<center.size() - 1; i++) { for (int j = i + 1; j<center.size(); j++) { d = (center[i].x - center[j].x)*(center[i].x - center[j].x) + (center[i].y - center[j].y)*(center[i].y - center[j].y); if (d<100) { item.push_back(i); break; } } } int n = 0; for (int j = 0; j<item.size(); j++) { squares.erase(squares.begin() + item[j]-n); ++n; } }*/ return isGetSquares; } //旋转图像中点的函数 Point getPointAffinedPos(Point src, Point center, double angle,double scale) { Point dst; int x = src.x - center.x; int y = src.y - center.y; dst.x = cvRound(x * cos(angle) + y * sin(angle) + center.x); dst.y = cvRound(-x * sin(angle) + y * cos(angle) + center.y); dst.x = (dst.x - center.x)*scale + center.x; dst.y = (dst.y - center.y)*scale + center.y; return dst; } //裁切 void cutImg(const Mat image, vector<vector<Point> > squares, vector<Mat>& rectResult) { for (int i_ = 0; i_ < squares.size(); i_++) { vector<Point>longside; //存储矩形长边的两个顶点 longside.push_back(squares[i_][1]); longside.push_back(squares[i_][2]); Mat rot(2, 3, CV_32FC1); //旋转矩阵 Mat rotMat = Mat::zeros(image.size(), image.type()); //定义旋转后的矩阵 Point center = Point(rotMat.cols / 2, rotMat.rows / 2); //旋转中心 double angle = atan((longside[0].y - longside[1].y) / ((longside[0].x - longside[1].x) + 0.00000001)) * 180 / CV_PI; //旋转角度 double scale = image.rows / sqrt(image.cols*image.cols + image.rows*image.rows); //缩放参数 rot = getRotationMatrix2D(center, angle, scale); //获得旋转矩阵 warpAffine(image, rotMat, rot, image.size()); //旋转并缩放图像 vector<Point>resultPoint; //存储旋转后矩形的4个顶点 Point point; for (int i = 0; i < 4; i++) { point = getPointAffinedPos(squares[i_][i], Point(image.cols / 2, image.rows / 2), angle*CV_PI / 180, scale); resultPoint.push_back(point); //存储顶点 } //获得矩形的bounding box(近似于矩形本身) int maxX, minX, maxY, minY; maxX = maxY = 0; minX = resultPoint[0].x; minY = resultPoint[0].y; for (int i = 0; i < resultPoint.size(); i++) { maxX = resultPoint[i].x > maxX ? resultPoint[i].x : maxX; minX = resultPoint[i].x < minX ? resultPoint[i].x : minX; maxY = resultPoint[i].y > maxY ? resultPoint[i].y : maxY; minY = resultPoint[i].y < minY ? resultPoint[i].y : minY; } //裁剪矩形并存储到新图像中 Rect rect(minX, minY, maxX - minX + 1, maxY - minY + 1); Mat temp(rotMat, rect); /*Mat temp_hsv; cvtColor(temp, temp_hsv, COLOR_BGR2HSV); Mat temp_H; temp_H.create(temp_hsv.size(), temp_hsv.depth()); int ch1[] = { 0, 0 }; mixChannels(&temp_hsv, 1, &temp_H, 1, ch1, 1); Mat Image(temp_H.size(), CV_8U); for (int i = 0; i<Image.rows; i++) { uchar* data = Image.ptr<uchar>(i); uchar* data1 = temp_H.ptr<uchar>(i); for (int j = 0; j<Image.cols; j++) { if (data1[j]>32) data[j] = 0; else data[j] = 255; } }*/ rectResult.push_back(temp); } cout << rectResult.size() << endl; } // the function draws all the squares in the image void drawSquares(Mat& image, const vector<vector<Point> > squares) { int maxX, minX, maxY, minY; for (int i = 0; i < squares.size(); i++) { maxX = maxY = 0; minX = squares[i][0].x; minY = squares[i][0].y; for (int j = 0; j < 4; j++) { maxX = maxX > squares[i][j].x ? maxX : squares[i][j].x; minX = minX < squares[i][j].x ? minX : squares[i][j].x; maxY = maxY > squares[i][j].y ? maxY : squares[i][j].y; minY = minY < squares[i][j].y ? minY : squares[i][j].y; } Point point1, point2; point1.x = minX; point1.y = minY; point2.x = maxX; point2.y = maxY; rectangle(image, point1, point2, (0, 0, 255), 2, 8, 0); //画矩形 } } bool findSquares(Mat& image, vector<Mat>& resultImage,vector<Point>& center) { bool isFindSquares = false; vector<vector<Point> > squarePts; isFindSquares = getSquarePts(image, squarePts); if (isFindSquares) cutImg(image, squarePts, resultImage); else cout << "can't find squares!" << endl; drawSquares(image, squarePts); for (int i = 0; i < squarePts.size(); i++) { Point point; point.x = (squarePts[i][0].x + squarePts[i][2].x) / 2; point.y = (squarePts[i][0].y + squarePts[i][2].y) / 2; center.push_back(point); } waitKey(20); return isFindSquares; int main() { VideoCapture capture(0); Mat image; if (!capture.isOpened()) { cout << "can not open"; cin.get(); return 0; } vector<vector<Point>>squares; vector<Mat>cutImage; while (true) { capture >> image; getSquarePts(image, squares); cutImg(image, squares, cutImage); drawSquares(image, squares); imshow("检测结果", image); waitKey(30); } return 0; } } ```
求助:安卓手机vnc远程树莓派无法用opencv显示摄像头视频窗口
使用python,用opencv和usb摄像头实时图像处理并显示,在电脑上用远程桌面可以正常运行,但是在手机上无法运行,如截图。请问如何解决?
opencv捕获USB摄像头,出现问题
求助各位大神,刚开始接触openCV,目前使用VS2013,openCV2.4.8。用openCV捕获USB摄像头,程序编译没报错,就是弹出一个窗口然后立马消失,命令行窗口提示摄像头打开失败,不知道什么原因,网上的帖子各种说法,终究没有解决 ```#include "stdafx.h" #include "cv.h" #include "highgui.h" #include "stdlib.h" #include "windows.h" #include "iostream" using namespace std; using namespace cv; int _tmain(int argc, _TCHAR* argv[]) { cvNamedWindow("camera",CV_WINDOW_AUTOSIZE); CvCapture* capture = cvCreateCameraCapture(-1); if (!capture) { cout << "camera failed" << endl; } IplImage* frame; Sleep(2000); while (1) { frame = cvQueryFrame(capture); if (!frame) { break; } cvShowImage("camera", frame); char c = cvWaitKey(33); if (c == 27) { break; } } cvReleaseCapture(&capture); cvDestroyWindow("camera"); return 0; } ```
opencv分类器小程序打开摄像头特别卡
为什么短短几段代码,打开摄像头却特别卡,各位老师,怎么解决 #include<opencv2/opencv.hpp> #include<iostream> using namespace cv; using namespace std; string car_detection_name = "D:\\opencv\\sources\\data\\haarcascades\\car_detection.xml"; CascadeClassifier car_detection; int main(int argv, char **argc) { car_detection.load(car_detection_name); VideoCapture cam(0); if(strcmp(argc[1],"run")==0) { while (1) { Mat frame, Gray; vector<Rect>car; cam >> frame; cvtColor(frame, Gray, CV_BGR2GRAY); equalizeHist(Gray, Gray); car_detection.detectMultiScale(Gray, car, 1.1, 2, 0 | CV_HAAR_SCALE_IMAGE, Size(1, 1)); for (int i = 0; i < car.size(); i++) { rectangle(frame, car[i], Scalar(255, 0, 0), 1, 8, 0); } imshow("output", frame); if (waitKey(30) >= 0) break; } } return 0; }
opencv怎么判断摄像头被其他进程占用
这边遇到单目usb摄像头在被其他进程占用的条件下,用另外的进程仍可以open和read(mat)成功。 怎么判断该摄镜头已经被占用了,不能再被open
用opencv3调用摄像头对摄像头的图像进行保存,需要键控
各位大神,我现在需要用opencv保存摄像头中的图像,但是需要键控选择保存自己想要的图片。 我用的是VS2013
OPENCV对摄像头ROI区域设定的问题
怎么把下面对图片进行ROI设定的代码改成对摄像头ROI区域的设定 #include <cv.h> #include <highgui.h> using namespace std; int main (int argc, char **argv) { // 加载原图像 IplImage* img = cvLoadImage("F://12.jpg"); // 创建新的要显示感兴趣区域的图像 IplImage* img2 = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,3); // 创建感兴趣ROI矩形区域 CvRect rect = cvRect(100,100,500,500); cvCopy(img,img2); cvSetImageROI(img2,rect); cvNamedWindow("源图像",1); cvShowImage("源图像",img); cvNamedWindow("ROI图像",1); cvShowImage("ROI图像",img2); while(1) { if(cvWaitKey(100) == 27) break; } cvDestroyWindow("源图像"); cvDestroyWindow("ROI图像"); cvReleaseImage(&img); cvReleaseImage(&img2); }
opencv打开IP网络摄像头
想用opencv2.4.9+QT接收一个wifi模块传回的视频,根据网上的资料和实际情况,编写如下:const string addr="http://192.168.1.1:8080/?action=stream.mjpg"; VideoCapture cap(addr); -------------------------- 但是就是读不出来,我用浏览器可以显示视频,请问前辈们有遇到这种情况的么,是因为什么地方配置不对吗?还请指教
linux下qt中opencv打开摄像头HIGHGUI ERROR:OpenCV Error:
我在Ubuntu下用qt结合opencv做一个人眼状态识别的程序,qt做界面,程序在vs控制台环境下已经可以运行,但是qt下出错。错误信息 如下: HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /home/mkc/opencv/opencvinstallor/opencv-2.4.9/modules/imgproc/src/color.cpp, line 3737 Qt has caught an exception thrown from an event handler. Throwing exceptions from an event handler is not supported in Qt. You must reimplement QApplication::notify() and catch all exceptions there. 1. 我的程序思路是用opencv打开摄像头并捕捉每一帧,做完处理,最后在qt的label上显示,其间做了一个mat到QImage的转换, 2.用opencv官方程序圈出人脸。我单纯的将这一步写进qt运行没问题,能将摄像头显示在label上,但是将自己完整的一直到人眼状态识别代码写进去就报错。 3.中间用了opencv新版的Mat格式,也用了IplImage的图像格式,在Ubuntu下单纯编译也没错,但是到了qt下就闪退。 4.我百度得到的可能性是:如果有空帧的话,cvtColor会报错,后来我将 if( !frame.empty() )写在打开摄像头后还是报错。 我自己根本不太懂opencv和qt,所以一直没解决,会不会是是mat还有IplImage、QImage三种格式之间转换出了问题。 希望各位遇见过的各位能给与帮助,不甚感激。
OpenCV3.0如何获得摄像头分辨率信息
VideoCapture可以设置或得到当前分辨率,但如何获得摄像头分辨率可选范围、对应帧数等信息?
opencv摄像头显示灰色
小弟最近在搞人脸识别的问题,做到从摄像头读入这儿,但是很奇怪,一开始代码运行摄像头成功显示,但是后来却先显示灰色。![图片说明](https://img-ask.csdn.net/upload/201603/22/1458623091_659749.png) 代码我是直接从网上粘贴的: ``` #include <cv.h> #include <cxcore.h> #include <highgui.h> #include<Windows.h> int main() { //声明IplImage指针 IplImage* pFrame = NULL; //获取摄像头 CvCapture* pCapture = cvCreateCameraCapture(0); //创建窗口 cvNamedWindow("video", 1); Sleep(200); //显示视屏 while (1) { pFrame = cvQueryFrame(pCapture); //if (!pFrame)break; cvShowImage("video", pFrame); char c = cvWaitKey(3); if (c == 27)break; } cvReleaseCapture(&pCapture); cvDestroyWindow("video"); } ```
如何用opencv识别出摄像头前面简单的圆柱体和长方体
如题~应该如何处理图片(用到什么函数,大致的步骤),万分感谢~
Kafka实战(三) - Kafka的自我修养与定位
Apache Kafka是消息引擎系统,也是一个分布式流处理平台(Distributed Streaming Platform) Kafka是LinkedIn公司内部孵化的项目。LinkedIn最开始有强烈的数据强实时处理方面的需求,其内部的诸多子系统要执行多种类型的数据处理与分析,主要包括业务系统和应用程序性能监控,以及用户行为数据处理等。 遇到的主要问题: 数据正确性不足 数据的收集主要...
volatile 与 synchronize 详解
Java支持多个线程同时访问一个对象或者对象的成员变量,由于每个线程可以拥有这个变量的拷贝(虽然对象以及成员变量分配的内存是在共享内存中的,但是每个执行的线程还是可以拥有一份拷贝,这样做的目的是加速程序的执行,这是现代多核处理器的一个显著特性),所以程序在执行过程中,一个线程看到的变量并不一定是最新的。 volatile 关键字volatile可以用来修饰字段(成员变量),就是告知程序任何对该变量...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
GitHub开源史上最大规模中文知识图谱
近日,一直致力于知识图谱研究的 OwnThink 平台在 Github 上开源了史上最大规模 1.4 亿中文知识图谱,其中数据是以(实体、属性、值),(实体、关系、实体)混合的形式组织,数据格式采用 csv 格式。 到目前为止,OwnThink 项目开放了对话机器人、知识图谱、语义理解、自然语言处理工具。知识图谱融合了两千五百多万的实体,拥有亿级别的实体属性关系,机器人采用了基于知识图谱的语义感...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
微信支付崩溃了,但是更让马化腾和张小龙崩溃的竟然是……
loonggg读完需要3分钟速读仅需1分钟事件还得还原到昨天晚上,10 月 29 日晚上 20:09-21:14 之间,微信支付发生故障,全国微信支付交易无法正常进行。然...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
YouTube排名第一的励志英文演讲《Dream(梦想)》
Idon’t know what that dream is that you have, I don't care how disappointing it might have been as you've been working toward that dream,but that dream that you’re holding in your mind, that it’s po...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
相关热词 c# 图片上传 c# gdi 占用内存 c#中遍历字典 c#控制台模拟dos c# 斜率 最小二乘法 c#进程延迟 c# mysql完整项目 c# grid 总行数 c# web浏览器插件 c# xml 生成xsd
立即提问