opencv如何实现在视频中画任意四边形进行检测?
#include<iostream>  

#include

#include

#include

#include
#include

using namespace std;

using namespace cv;

Mat srcframe, tmpframe, copyframe;

vector pt1;

const string wndName("输出视频");

static void onMouse(int, int, int, int, void*);//SetMouseCallBack的回调函数

int main()

{

system("color 2F");//设定界面颜色
bool stop = false;
bool gotROI = false;
VideoCapture cap("F:/视频检测/测试视频/20100323_华美达广场对面.avi");
if (!cap.isOpened())

{

cout << "读取视频有误" << endl;

return -1;

}
double rate = cap.get(CV_CAP_PROP_FPS);

namedWindow("输出视频",1);

while(!stop)
{               
    cap>>srcframe;
    if(!srcframe.data)
        break;
    imshow("输出视频",srcframe);
    int delay = 1000 / rate;
    int c = waitKey(delay);  
    if ((char)c == 27 )  
    {  
        stop = true;  
    } 
    setMouseCallback("输出视频",onMouse,NULL);
    if (c >= 0)  
    {  
        waitKey(0);  
    } 
}
waitKey(0);  
return 0;  

}

static void onMouse(int event, int x, int y, int flags, void*)

{

static int i = 0;//点击计数

switch (event)

{

case CV_EVENT_LBUTTONDOWN://左击,获取坐标
pt1.push_back(Point(x, y));
if (i == 0||i % 4 == 0)

{

        circle(srcframe, pt1[i], 1, Scalar(0, 0, 255));//描第一个点  
    }  
    else  
    {  
        if((i+1)%4 == 0)
        {

            circle(srcframe, pt1[i], 1, Scalar(0, 0, 255));//描点 
            line(srcframe, pt1[i], pt1[i-1], Scalar(0, 255, 0));//与前一点进行连
            line(srcframe, pt1[i], pt1[i-3], Scalar(0, 255, 0));//与前一点进行连
            line(srcframe, pt1[i], pt1[i-1], Scalar(255));//映射到掩
            line(srcframe, pt1[i], pt1[i-3], Scalar(255));//映射到掩
        }
        else
        {

            circle(srcframe, pt1[i], 1, Scalar(0, 0, 255));//描点  
            line(srcframe, pt1[i], pt1[i-1], Scalar(0, 255, 0));//与前一点进行连
            line(srcframe, pt1[i], pt1[i-1], Scalar(255));//映射到掩
        }
    }  
    i++;  
    break;  

}  
imshow(wndName, srcframe);  

}

如上,我的代码能实现在停止的视频帧上画出任意四边形,但是如何能实现四边形一直显示在视频中.

1个回答

qq_26845835
INFP_DIP 你分享的是矩形检测区域的,我现在做的项目就是想把矩形ROI换成不规则的ROI
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
opencv在视频里画不规则图形

在图片里可以,在视频里就不行了,代码如下: ``` /****************************************** * 使用说明: * * 左键单击画点 * * 右键自动闭合曲线 * * 右键双击上色 * ******************************************/ #include <string> #include <list> #include <vector> #include <cmath> #include<opencv2/opencv.hpp> using namespace std; using namespace cv; void my_mouse_callback(int event, int x, int y, int flags, void *param); CvPoint point_1, point_2, point_3; int ymin = 0; int ymax = 0; bool drawing_switch = false; vector<CvPoint> point; VideoCapture cap("test.mp4");/*0*/ Mat image; Mat image = imread("test.jpg");//改用视频时将这行注释 Mat temp; void draw_line(Mat&img) //画线 { line(img, point_1, point_2, cvScalar(0x00, 0x00, 0xff)); /*red*/ //函数主体是line函数 } typedef struct tagEDGE { double xi; double dx; int ymax; bool operator <(tagEDGE &e) { return xi<e.xi; } }EDGE;//边 void GetMinMax(vector<CvPoint> &py, int &ymin, int &ymax); void InitNewEdgeTable(vector< list<EDGE> > &nTable, vector<CvPoint> &py, int ymin, int ymax); void CreateTable(vector< list<EDGE> > &nTable, int ymin, int ymax); void Painting(Mat&img, vector< list<EDGE> > &nTable, int ymin, int ymax); int main() { point_1 = cvPoint(0, 0); point_2 = cvPoint(0, 0); point_3 = cvPoint(0, 0);//进行点的初始化 namedWindow("Box Example"); cvSetMouseCallback("Box Example", my_mouse_callback, (void *)&image); while (1) { /*cap >> image;*/ image.copyTo(temp); if (drawing_switch) draw_line(temp); imshow("Box Example", temp); waitKey(30); } return 0; } void my_mouse_callback(int event, int x, int y, int flags, void *param) { Mat& img = *(cv::Mat*)param; switch (event) { case CV_EVENT_MOUSEMOVE: if (drawing_switch) point_2 = cvPoint(x, y); break; case CV_EVENT_LBUTTONDOWN: draw_line(image); point_2 = point_1; point_1 = cvPoint(x, y); point.push_back(point_1); if (!drawing_switch)point_3 = point_1; circle(image, point_1, 1, cvScalar(0, 0, 255)); drawing_switch = true; break; case CV_EVENT_RBUTTONDOWN://右键封闭多边形 point_2 = point_3; draw_line(image); drawing_switch = false; break; case CV_EVENT_RBUTTONDBLCLK://右键双击上色 GetMinMax(point, ymin, ymax);//获取多边形的最小最大y值 vector< list<EDGE> > nTable(ymax - ymin + 1); InitNewEdgeTable(nTable, point, ymin, ymax); //初始化边表 CreateTable(nTable, ymin, ymax);//创建每一扫描线所对应的边,并排序 Painting(image, nTable, ymin, ymax);//上色 break; } } void GetMinMax(vector<CvPoint> &py, int &ymin, int &ymax) //获取多边形的最小最大y值 { for (vector<CvPoint>::iterator iter = py.begin(); iter != py.end(); ++iter) { if ((*iter).y<ymin) ymin = (*iter).y; if ((*iter).y>ymax)ymax = (*iter).y; } } void InitNewEdgeTable(vector< list<EDGE> > &nTable, vector<CvPoint> &py, int ymin, int ymax) //初始化边表 { EDGE e; vector<CvPoint>::iterator iter = py.begin(); for (vector<CvPoint>::size_type i = 0; i<py.size(); i++) { const CvPoint& ps = *(iter + i); const CvPoint& pe = *(iter + (i + 1) % py.size()); if (pe.y != ps.y) { e.dx = double(pe.x - ps.x) / double(pe.y - ps.y); if (pe.y>ps.y) { e.xi = ps.x; e.ymax = pe.y; nTable[ps.y - ymin].push_front(e); } else { e.xi = pe.x; e.ymax = ps.y; nTable[pe.y - ymin].push_front(e); } } } } void CreateTable(vector< list<EDGE> > &nTable, int ymin, int ymax) //创建每一扫描线所对应的边,并排序 { EDGE e; for (int y = ymin + 1; y <= ymax; y++) { for (list<EDGE>::iterator iter = nTable[y - 1].begin(); iter != nTable[y - 1].end(); iter++) { if ((*iter).ymax>y) { e.xi = (*iter).xi + (*iter).dx; e.dx = (*iter).dx; e.ymax = (*iter).ymax; nTable[y].push_back(e); } } nTable[y - 1].sort(); } } void Painting(Mat&img, vector< list<EDGE> > &nTable, int ymin, int ymax) //上色 { for (int y = ymin; y <= ymax; y++) { for (list<EDGE>::iterator iter = nTable[y].begin(); iter != nTable[y].end(); ++iter) { int x1 = int(ceil((*iter).xi)); ++iter; int x2 = int(floor((*iter).xi)); for (int i = x1; i <= x2; ++i) circle(img, cvPoint(i, y), 1, cvScalar(0, 0, 255)); } } } ``` 是不是因为每次把image更新了,所以一直重复第一次按左键时的动作,请问怎么改,或者有没有其他方法

求用opencv实现的车辆检测跟踪代码,高分悬赏,急

有人有用opencv实现的车辆检测跟踪代码吗?能在原视频上框出车辆并且有跟踪轨迹。高分悬赏,多谢!

如何利用opencv实现在视频中每隔固定的n像素列数取一副图像?

在视频中,视频向前播放,视频画面每隔固定的像素列数n后,取当前的画面。各位大神有没有思路?

如何在Android中用OPENCV实现人脸检测,人脸识别等功能,如何实现,用什么方法?

如何在Android中用OPENCV实现人脸检测,人脸识别等功能,如何实现,用什么方法?

MFC+Opencv做实时视频移动目标检测

这段时间在用visual studio2013-MFC+opencv2.4.8,结合USB摄像头采集视频信号,做实时的移动目标检测,不知道各位大神有什么好的建议?小弟求助,急...

opencv实现检测瞳孔轮廓

用的是opencv3.4.0 已经实现人眼检测。想已经在检测出人眼的区域找出瞳孔的轮廓并计算面积。但老师运行不出来。是findContours()参数问题还是其他的啊?望大神们给个建议 int main() { CascadeClassifier faceCascader, eyeCascader; String filename1 = "D:/opencv/newbuild/install/etc/haarcascades/haarcascade_frontalface_alt.xml"; String filename2 = "D:/opencv/newbuild/install/etc/haarcascades/haarcascade_eye.xml"; //vector<Point> pt; //绘制轨迹 double nowFrameNum, blinkFrameNum, frq; nowFrameNum = blinkFrameNum = 0; if (!faceCascader.load(filename1)) { printf("can not load the face feature data \n"); return -1; } if (!eyeCascader.load(filename2)) { printf("can not load the eye feature data \n"); return -1; } namedWindow("input", WINDOW_AUTOSIZE); VideoCapture capture; capture.open(0); Mat frame, gray, src; vector<Rect> faces, eyes; while (capture.read(frame)) { flip(frame, frame, 1); src = frame; cvtColor(frame, gray, COLOR_BGR2GRAY); //直方图均衡 equalizeHist(gray, gray); faceCascader.detectMultiScale(gray, faces, 1.1, 3, 0, Size(50, 50)); Rect roi, rect; for (int i = 0; i < faces.size(); i++) { roi.x = faces[static_cast<int>(i)].x; roi.y = faces[static_cast<int>(i)].y; roi.width = faces[static_cast<int>(i)].width; roi.height = faces[static_cast<int>(i)].height / 2.0; Mat faceROI = frame(roi); eyeCascader.detectMultiScale(faceROI, eyes, 1.1, 7, 0, Size(20, 20)); for (int j = 0; j < eyes.size(); j++) { rect.x = faces[static_cast<int>(i)].x + eyes[j].x + eyes[j].width / 2.0; rect.y = faces[static_cast<int>(i)].y + eyes[j].y + eyes[j].height / 2.0; rect.width = eyes[j].width; rect.height = eyes[j].height; circle(frame, Point(rect.x, rect.y), rect.width / 2.0, Scalar(0, 0, 255), 2, 8); Mat eyesROI = frame(rect); vector<vector<Point>> contours; vector<Vec4i> hireachy; //Mat kernal = getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1)); //morphologyEx(eyesROI,eyesROI, CV_MOP_OPEN, kernal, Point(-1, -1)); if (rect.width != 0 && roi.width != 0) { cvtColor(eyesROI, eyesROI, CV_BGR2GRAY); findContours(eyesROI, contours, hireachy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point(0,0)); } } rectangle(frame, faces[static_cast<int>(i)], Scalar(0, 255, 0), 2, 8, 0); } char q = waitKey(10); //Esc退出 if (q == 27) { break; } //double area = contourArea(eyesROI); imshow("input", frame); nowFrameNum++; if (rect.width == 0) blinkFrameNum++; if (int(nowFrameNum) % 10 == 0) { cout << roi.area() << endl; cout << "眨眼频率为: " << blinkFrameNum << " " << nowFrameNum << endl; frq = blinkFrameNum / nowFrameNum; cout << setprecision(2) << frq << endl; //cout << "area is " << area << endl; } } waitKey(0); capture.release(); return 0; } ``` ```

opencv检测人眼并画出人眼轮廓

如果仅仅是检测人眼的话本人还是能够写出代码的,但现在要求是:1.要检测出人眼并画出轮廓2.闭眼时轮廓跟着合上,睁眼时轮廓也跟着打开,及轮廓不是仅仅用方框或是圆形画出来,而是要和眼睛同步动作 急求代码,,,,,,小弟感激不尽啊!!

基于opencv的视频人数统计入门

最近接手了一个基于opencv进行视频人数统计的项目,其中还涉及到进出门等等问题。 我现在主要想通过opencv调用相机(网络相机,安装在过道顶上),比较精确地判断出视频中有几个人。 求问做过相关项目的大神们有没有靠谱的学习网址推荐(找过一些资料都不好用),或者说可以用的github源码,万分感谢!

Opencv 视频里特定点的移动轨迹

如题,想在一段视频里画出某一点的运动轨迹,并保存下来,请教各位高手有什么办法吗?或者不用opencv,其他的软件也可以

Python及OpenCV视频实时人脸覆盖

视频实时人脸检测功能已经做出来了就差人脸覆盖了,求助,我的代码如下,请各位大神直接在我的代码里加入人脸覆盖代码即可,谢谢; import cv2 face_cascade = cv2.CascadeClassifier('E:\openCV\opencv\sources/data/haarcascades/haarcascade_frontalface_alt2.xml') cap = cv2.VideoCapture(0) while True: ret,img = cap.read() gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.3, 5) for (x,y,w,h) in faces: cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) cv2.imshow('img',img) if cv2.waitKey(1) &0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()

opencv 摄像头读取视频保存

namedWindow("E1",cv::WINDOW_AUTOSIZE); namedWindow("E2",cv::WINDOW_AUTOSIZE); VideoCapture capture(0); Size size((int)capture.get(CV_CAP_PROP_FRAME_WIDTH ),(int)capture.get(CV_CAP_PROP_FRAME_HEIGHT )); VideoWriter writer; writer.open("D:\\shipin.avi",CV_FOURCC('M','J','P','G'),12,size); Mat log_frame, bgr_frame; for(;;) { capture>>bgr_frame; if(bgr_frame.empty()) break; imshow("E1",bgr_frame); Canny(bgr_frame,log_frame,60,120); imshow("E2",log_frame); writer<<log_frame; char c = waitKey(1); if(c == 27) break; } 在上面这段代码中,视频保存在本地,但是只有6K,而且播放有没有东西

怎样实现c++利用opencv实现人脸检测与识别

就是指通过摄像头保存识别的人脸,再次识别时如果被识别的人是已经添加图片的,就把他的名字显示出来,如果没有就将人脸保存。求大神,提前谢谢。

opencv2 图像转视频时视频编码器的选择 视频隐写术

问题来源:视频隐写术;思路是利用opencv先将视频转为图像,然后将要隐藏的信息写入某一帧图像中,最后将图像合成视频 。但是这样做的过程中遇到一个问题:图像合成视频时总会丢失图像的一些低位的信息,因此隐藏在图片里的信息会被破坏掉。有没有哪种方法可以将图片无损的合成视频呢?这个问题似乎和cv2里的fourcc(视频编码器)有关。或者视频的隐写术这样的思路可不可行呢?希望有大神可以指出鸭!

我用qt+opencv 录制了视频

我用qt+opencv 录制了视频,问题一:录制了1分钟,视频中不到一分钟!用了定时器,ntimer= 1000/fps; 问题二,怎么录制音频? 谢谢

关于opencv视频传输卡顿现象

在局域网内通过socket和opencv进行视频传输,卡顿现象特别也重,各位大佬能不能帮忙看一下 下面是server端的代码 #define _WINSOCK_DEPRECATED_NO_WARNINGS #include <iostream> #include <opencv2\core\core.hpp> #include <opencv2\highgui\highgui.hpp> #include <WinSock2.h> #pragma comment (lib,"ws2_32.lib") using namespace std; using namespace cv; enum { PORT = 16789 }; int main() { WSADATA wd; WSAStartup(0x01, &wd); SOCKET sock = socket(AF_INET, SOCK_STREAM, 0); if (INVALID_SOCKET == sock) { cout << "创建套接字错误" << WSAGetLastError() << endl; return -1; } sockaddr_in sa = { AF_INET }; sa.sin_port = htons(PORT); if (SOCKET_ERROR == bind(sock, (const sockaddr*)&sa, sizeof(sa))) { cout << "绑定失败" << WSAGetLastError() << endl; return -1; } if (SOCKET_ERROR == listen(sock, 5)) { cout << "侦听失败" << WSAGetLastError() << endl; return -1; } SOCKET socka = -1; int nLen = sizeof(sa); socka = accept(sock, (sockaddr*)&sa, &nLen); char s[1000000]; Mat src_image = imread("2.jpg"); imshow("看看", src_image); int rowNumber = src_image.rows; int colNumber = src_image.cols*src_image.channels(); while (1) { int n = recv(socka, s, sizeof(s), 0); if (n <= 0) break; //s[n] = 0; for (int i = 0; i < rowNumber; i++) { uchar *data = src_image.ptr<uchar>(i); for (int j = 0; j < colNumber; j++) { // data[j] = s[i*colNumber + j]; data[j] = s[colNumber*i + j]; } } imshow("收到的图像", src_image); waitKey(1); } closesocket(sock); return 0; } 下面是客户端的代码 #define _WINSOCK_DEPRECATED_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <opencv2\highgui.hpp> #include <opencv2\core\core.hpp> #include <opencv2\opencv.hpp> #ifdef _WIN32 #include <WinSock2.h> #pragma comment (lib,"ws2_32.lib") #else #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> typedef int SOCKET; #define INVALID_SOCKET (SOCKET)(~0) #define SOCKET_ERROR (-1) #endif using namespace cv; using namespace std; enum { PORT = 16789 }; int main() { #ifdef _WIN32 WSADATA wd; WSAStartup(0x01, &wd); #endif SOCKET sock = socket(AF_INET, SOCK_STREAM, 0); if (INVALID_SOCKET == sock) { cout << "Create socket Error" << /*WSAGetLastError() <<*/ endl; return -1; } sockaddr_in sa = { AF_INET }; if (SOCKET_ERROR == bind(sock, (const sockaddr*)&sa, sizeof(sa))) { cout << "bind Error" /*<< WSAGetLastError()*/ << endl; return -1; } sa.sin_addr.s_addr = inet_addr("192.168.1.100"); sa.sin_port = htons(PORT); connect(sock, (const sockaddr*)&sa, sizeof(sa)); VideoCapture capture(0); Mat src_image; while (1) { capture >> src_image; // imwrite("2.jpg", Frame); // Mat src_image = imread("2.jpg"); imshow("这也是图片", src_image); int rowNumber = src_image.rows; int colNumber = src_image.cols*src_image.channels(); char SendData[1000000] = ""; for (int i = 0; i < rowNumber; i++) { uchar *data = src_image.ptr<uchar>(i); for (int j = 0; j < colNumber; j++) { SendData[colNumber*i + j] = data[j]; } } send(sock, SendData, sizeof(SendData), 0); waitKey(30); } closesocket(sock); return 0; } 大概有哪些原因会导致视频传输特别卡顿啊,望大佬指点

opencv角点问题,自动识别多边形顶点

各位大牛、、角点检测问题。不通过改变goodFeatuersToTrack里的maxCorner(最大角点数目),我就想要四边形四个顶点上的四个点,想去掉其他不必要的点,这个该怎么处理啊?没有思路啊。或者不依靠maxCorner,opencv可以自动识别出多边形有几个顶点 吗?先谢过啦~![图片说明](https://img-ask.csdn.net/upload/201511/18/1447837352_713724.jpg)

opencv-c++视频缩放问题

这是部分代码 void CMy3dshowDlg::OnShow(CString File) { CvSize dst_Size; dst_Size.width=0; dst_Size.height=0; scale=1.0; cvNamedWindow("Show",0); cvResizeWindow("Show",nScreenWidth/2,nScreenHeight/2); cvMoveWindow("Show",nScreenWidth/4,nScreenHeight/4); HWND hWnd = (HWND)cvGetWindowHandle("Show"); hWnd = ::GetParent(hWnd); LONG style = GetWindowLong( hWnd, GWL_STYLE); style = style & (~WS_CAPTION & ~WS_BORDER & ~WS_THICKFRAME); SetWindowLong( hWnd, GWL_STYLE, style); SetClassLong(hWnd,-10,(LONG)GetStockObject(BLACK_BRUSH)); cvSetMouseCallback("Show",my_mouse_callback,this); g_capture = cvCreateFileCapture(File); while(1) { frame = cvQueryFrame(g_capture); int nFrame = (int)cvGetCaptureProperty(g_capture,CV_CAP_PROP_FRAME_COUNT); int currentFrame = (int)cvGetCaptureProperty(g_capture,CV_CAP_PROP_POS_FRAMES); if (currentFrame==nFrame-1){ cvSetCaptureProperty(g_capture,CV_CAP_PROP_POS_FRAMES,0); } if(!frame==NULL) { dst_Size.width=frame->width * scale; dst_Size.height=frame->height * scale; dstframe=cvCreateImage(dst_Size,frame->depth,frame->nChannels); cvResize(frame,dstframe); //cvMoveWindow("Show",(nScreenWidth-dst_Size.width)/2,(nScreenHeight-dst_Size.height)/2); if(dstframe->width<nScreenWidth||dstframe->height<nScreenHeight){ cvShowImage("Show",dstframe); } cvReleaseImage(&dstframe); } else { cvShowImage("Show",frame); } double currentFrameWidth = cvGetCaptureProperty(g_capture,CV_CAP_PROP_FRAME_WIDTH); char c = cvWaitKey(33); switch (c) { case ' ': while(1) { c = cvWaitKey(0); if(c == ' ') break; }break; case '+': { if((frame->width*scale)<=nScreenWidth&&(frame->height*scale)<=nScreenHeight){ scale=scale+0.1; break; } break; }break; case'-': { if((frame->width*scale)>nScreenWidth/7&&(frame->height*scale)>nScreenHeight/7){ scale=scale-0.1; break; }break; } break; default: break; } } cvSetMouseCallback("Show",NULL,NULL); cvReleaseImage(&frame); cvReleaseImage(&dstframe); cvReleaseCapture(&g_capture); return; } 本来是想要做视频缩放的,之前是通过缩放窗口来达到效果,可以实现,不过现在不想要这种效果,所以我想固定窗口,然后实现视频的缩放,所以我只在这里做了改变cvNamedWindow("Show",0); cvResizeWindow("Show",nScreenWidth/2,nScreenHeight/2); cvMoveWindow("Show",nScreenWidth/4,nScreenHeight/4);,发现不能达到缩放,只是分辨率改变了。

利用opencv实现人脸识别

目前本人已实现实时人脸检测,但怎样进一步完成特征采集存入数据库,并将检测到的人脸与数据库中的比对却没有头绪。求助!!!

关于opencv里实现svm+hog的行人检测

各位大佬们,我想问一下,我在opencv里实现了svm和hog的行人检测,最后要计算检测的精度的时候应该怎么计算,用什么公式?

学Python后到底能干什么?网友:我太难了

感觉全世界营销文都在推Python,但是找不到工作的话,又有哪个机构会站出来给我推荐工作? 笔者冷静分析多方数据,想跟大家说:关于超越老牌霸主Java,过去几年间Python一直都被寄予厚望。但是事实是虽然上升趋势,但是国内环境下,一时间是无法马上就超越Java的,也可以换句话说:超越Java只是时间问题罢。 太嚣张了会Python的人!找工作拿高薪这么简单? https://edu....

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

为什么程序猿都不愿意去外包?

分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助

Java校招入职华为,半年后我跑路了

何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...

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

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

@程序员:GitHub这个项目快薅羊毛

今天下午在朋友圈看到很多人都在发github的羊毛,一时没明白是怎么回事。 后来上百度搜索了一下,原来真有这回事,毕竟资源主义的羊毛不少啊,1000刀刷爆了朋友圈!不知道你们的朋友圈有没有看到类似的消息。 这到底是啥情况? 微软开发者平台GitHub 的一个区块链项目 Handshake ,搞了一个招募新会员的活动,面向GitHub 上前 25万名开发者派送 4,246.99 HNS币,大约价...

用python打开电脑摄像头,并把图像传回qq邮箱【Pyinstaller打包】

前言: 如何悄悄的打开朋友的摄像头,看看她最近过的怎么样,嘿嘿!这次让我带你们来实现这个功能。 注: 这个程序仅限在朋友之间开玩笑,别去搞什么违法的事情哦。 代码 发送邮件 使用python内置的email模块即可完成。导入相应的代码封装为一个send函数,顺便导入需要导入的包 注: 下面的代码有三处要修改的地方,两处写的qq邮箱地址,还有一处写的qq邮箱授权码,不知道qq邮箱授权码的可以去百度一...

C++(继承):19---虚基类与虚继承(virtual)

一、菱形继承 在介绍虚继承之前介绍一下菱形继承 概念:A作为基类,B和C都继承与A。最后一个类D又继承于B和C,这样形式的继承称为菱形继承 菱形继承的缺点: 数据冗余:在D中会保存两份A的内容 访问不明确(二义性):因为D不知道是以B为中介去访问A还是以C为中介去访问A,因此在访问某些成员的时候会发生二义性 缺点的解决: 数据冗余:通过下面“虚继承”技术来解决(见下) 访问...

计算机网络——浅析网络层

一、前言 注意,关于ipv4和ipv6,ipv4是ip协议第4版本,也表示这个版本的ip一共4个字节,同样地,ipv6是ip协议第6版本,也表示这个版本的ip一共6个字节。 关于网络层使用路由器实现互联:在计算机网络的分层结构中,不同层有不同的中继设备: 计算机网络层 中继设备/中继系统 物理层 中继器、集线器Hub 数据链路层 网桥或交换机(交换机是多端口网桥,两者本质上是一个东西) 网络层 路...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

华为初面+综合面试(Java技术面)附上面试题

华为面试整体流程大致分为笔试,性格测试,面试,综合面试,回学校等结果。笔试来说,华为的难度较中等,选择题难度和网易腾讯差不多。最后的代码题,相比下来就简单很多,一共3道题目,前2题很容易就AC,题目已经记不太清楚,不过难度确实不大。最后一题最后提交的代码过了75%的样例,一直没有发现剩下的25%可能存在什么坑。 笔试部分太久远,我就不怎么回忆了。直接将面试。 面试 如果说腾讯的面试是挥金如土...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

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

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

女朋友过生日,我花了20分钟给她写了一个代理服务器

女朋友说:“看你最近挺辛苦的,我送你一个礼物吧。你看看想要什么,我来准备。” 我想了半天,从书到鞋子到电子产品最后到生活用品,感觉自己什么都不缺,然后和她说:“你省省钱吧,我什么都不需要。” 她坚持要送:“不行,你一定要说一个礼物,我想送你东西了。” 于是,我认真了起来,拿起手机,上淘宝逛了几分钟,但还是没能想出来缺点什么,最后实在没办法了:“这样吧,如果你实在想送东西,那你就写一个代理服务器吧”...

记一次腾讯面试,我挂在了最熟悉不过的队列上……

腾讯后台面试,面试官问:如何自己实现队列?

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

HTTP与HTTPS的区别

面试官问HTTP与HTTPS的区别,我这样回答让他竖起大拇指!

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

立即提问
相关内容推荐