C++如何用OPENCV对摄像头进行ROI感兴趣区域设定,求大神赐教 谢谢 10C

以下是我想要处理的一段代码

#include "stdafx.h"
//---------------------------------【头文件、命名空间包含部分】----------------------------
// 描述:包含程序所使用的头文件和命名空间
//------------------------------------------------------------------------------------------------
#include
#include
#include
using namespace cv;
using namespace std;

//-----------------------------------【main( )函数】------------------------------------------
// 描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------------------------------------------------------
int main( )
{
//打开摄像头
char c = 0;
VideoCapture capture(0);
while (1)

{
Mat frame;
capture >> frame;

//【1】Mat变量定义

Mat midImage;//目标图的定义

//【2】转为灰度图并进行图像平滑
cvtColor(frame,midImage, CV_BGR2GRAY);//转化边缘检测后的图为灰度图
GaussianBlur( midImage, midImage, Size(9, 9), 2, 2 );

//【3】进行霍夫圆变换
vector circles;
HoughCircles( midImage, circles, CV_HOUGH_GRADIENT,1.5, 10, 200, 100, 0, 0 );

//【4】依次在图中绘制出圆
for( size_t i = 0; i < circles.size(); i++ )
{
//参数定义
Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));
int radius = cvRound(circles[i][2]);
//绘制圆心
circle( frame, center, 3, Scalar(0,255,0), -1, 8, 0 );
//绘制圆轮廓
circle( frame, center, radius, Scalar(155,50,255), 3, 8, 0 );
//打印圆心坐标
printf("x = %d,y = %d\n",cvRound(circles[i][0]),cvRound(circles[i][1]));
}

//【5】显示效果图

namedWindow("效果");
imshow("效果", frame2);
c = cvWaitKey(30);
if (c == 27)//Esc键退出
{
break;
}
}
return 0;

}

请问如何如何对这段代码加入ROI区域的设定,求大神赐教

1个回答

还有问一下进行ROI处理过后 ,后面的代码是不是就只处理ROI范围内的图像了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C++如何用OPENCV对摄像头进行ROI感兴趣区域设定,求大神赐教 谢谢

以下是我想要处理的一段代码 #include "stdafx.h" //---------------------------------【头文件、命名空间包含部分】---------------------------- // 描述:包含程序所使用的头文件和命名空间 //------------------------------------------------------------------------------------------------ #include <opencv2/opencv.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream> using namespace cv; using namespace std; //-----------------------------------【main( )函数】------------------------------------------ // 描述:控制台应用程序的入口函数,我们的程序从这里开始 //----------------------------------------------------------------------------------------------- int main( ) { //打开摄像头 char c = 0; VideoCapture capture(0); while (1) { Mat frame; capture >> frame; //【1】Mat变量定义 Mat midImage;//目标图的定义 //【2】转为灰度图并进行图像平滑 cvtColor(frame,midImage, CV_BGR2GRAY);//转化边缘检测后的图为灰度图 GaussianBlur( midImage, midImage, Size(9, 9), 2, 2 ); //【3】进行霍夫圆变换 vector<Vec3f> circles; HoughCircles( midImage, circles, CV_HOUGH_GRADIENT,1.5, 10, 200, 100, 0, 0 ); //【4】依次在图中绘制出圆 for( size_t i = 0; i < circles.size(); i++ ) { //参数定义 Point center(cvRound(circles[i][0]), cvRound(circles[i][1])); int radius = cvRound(circles[i][2]); //绘制圆心 circle( frame, center, 3, Scalar(0,255,0), -1, 8, 0 ); //绘制圆轮廓 circle( frame, center, radius, Scalar(155,50,255), 3, 8, 0 ); //打印圆心坐标 printf("x = %d,y = %d\n",cvRound(circles[i][0]),cvRound(circles[i][1])); } //【5】显示效果图 namedWindow("效果"); imshow("效果", frame2); c = cvWaitKey(30); if (c == 27)//Esc键退出 { break; } } return 0; } 请问如何如何对这段代码加入ROI区域的设定,求大神赐教

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进行ROI区域设定的时候想要对摄像头进行设定,出现问题。

代码如下,出来的效果不是摄像头ROI设定,而是摄像头读取的第一帧ROI设定,请问怎么改成摄像头ROI设定,求大神赐教。 #include <cv.h> #include <highgui.h> using namespace std; int main(int argc, char **argv) { // 加载原图像 CvCapture* capture = cvCaptureFromCAM(0); // capture from video device #0 IplImage* img = 0; if (!cvGrabFrame(capture)){ // 抓取一帧,失败退出 printf("Could not grab a frame\n"); exit(0); } img = cvRetrieveFrame(capture); // 恢复获取的帧图像 // 创建新的要显示感兴趣区域的图像 IplImage* img2 = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 3); // 创建感兴趣ROI矩形区域 CvRect rect = cvRect(10, 20, 200, 250); 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); }

设置了一个ROI感兴趣区域,然后怎样用opencv识别该区域内的颜色?

新手求问,最近在做一个红绿灯识别的数字图像处理的大型实验,虽然什么都不会但是还是想自己摸索着做一下。想问设置了一个感兴趣区域以后怎么判别该区域内的颜色? 用的C++。谢谢各位大神了!!

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

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

用opencv3调用摄像头对摄像头的图像进行保存,需要键控

各位大神,我现在需要用opencv保存摄像头中的图像,但是需要键控选择保存自己想要的图片。 我用的是VS2013

QT中使用opencv打开摄像头

我是按照一篇帖子上写的编得一个打开摄像头显示视频的程序,但是不知道为什么显示错误![错误提示](https://img-ask.csdn.net/upload/201602/26/1456490510_417338.png)

用opencv调用摄像头,然后根据视频图像变化,获得摄像头运动轨迹可以怎么做?

用opencv调用摄像头,然后根据视频图像变化,获得摄像头运动轨迹可以怎么做?最好有程序

Linux下使用opencv打开摄像头后无法彻底关闭摄像头

Linux下使用opencv调用cvCreateCameraCapture打开摄像头后,使用cvReleaseCapture无法彻底关闭摄像头,摄像头上的灯还亮着。只有退出程序才能关闭。如果不退出的话,再次调用cvCreateCameraCapture后就无法获取图像,出现 VIDIOC_STREAMON: 错误的文件描述符。初次接触opencv,不是很了解。

用OpenCV2 打开多摄像头,如何确定摄像头序号

这是个小问题。 按照OpenCV说明书的说法,打开摄像头,可以使用如下语句形式: VideoCapture::VideoCapture(int device) 对于其中的device部分,说明手册有如下提示 device – id of the opened video capturing device (i.e. a camera index). 我想问的是,使用多个摄像头时,如何确定各个摄像头所对应的id。 比如,当有两个摄像头时,我尝试一个为0,一个为1,通过看捕获的图像,可以确定各摄像头的id,但不知这个顺序是否固定。但这样毕竟很被动,而且不知道开关机等操作后,再运行改程序,设备号是否会变化。 我想一定有可以查看摄像头对应的所谓id的方法,但没有搜到,希望有人能解答。

openCV 标示感兴趣区域的外轮廓

现在我用深度图得到我感兴趣区域所有的像素点的坐标, 我想把此区域的外轮廓标示出来要用到opencv哪些函数, 望大神告知,谢谢

opencv摄像头属性调用

请教各位高手 opencv里如何调用摄像头驱动自带的“视频属性对话框”和“输入属性对话框”啊

opencv3.2获取摄像头问题

我在vs下集成了opencv3.2,但是获取摄像头的时候什么都不能显示。同样的代码使用opencv2.4.10的库就可以获取 这是为什么呢?

树莓派opencv调用树莓派摄像头

在树莓派3上安装了opencv,用opencv去掉用usb接上的摄像头可以,但是不能获取树莓派的标准摄像头?应该怎么去设置

opencv2.4.8打开摄像头失败

各位大神好! 不知道有没有谁之前使用opencv2.4.8可以正常打开USB摄像头的? 我使用的是vs2013+opencv2.4.8 系统是win8中文版,用opencv打开摄像头时怎么无法打开 获取摄像头的指针为空,很是纠结,

OpenCV打开摄像头问题。。。。

OpenCV2.4.13+VS2012+win10程序 void CCountDlg::OnOpencam() { if(pCapture) cvReleaseCapture(&pCapture); pCapture = cvCaptureFromCAM(0); m_num=0; m_in=0; m_out=0; UpdateData(FALSE); // 调用数人数主程序 SetTimer(1,TIMERCNT,NULL); } 用opencam按钮打开可以打开按钮,但是不显示图像,有木有知道为什么的,请指教~

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打开IP网络摄像头

想用opencv2.4.9+QT接收一个wifi模块传回的视频,根据网上的资料和实际情况,编写如下:const string addr="http://192.168.1.1:8080/?action=stream.mjpg"; VideoCapture cap(addr); -------------------------- 但是就是读不出来,我用浏览器可以显示视频,请问前辈们有遇到这种情况的么,是因为什么地方配置不对吗?还请指教

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; } } ```

opencv摄像头捕捉灰屏

一个简单的测试代码,但是显示窗口是灰屏的(使用电脑的摄像头) win10,vs2017,opencv3.4.2 ``` #include <cv.h> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv; int main() { CvCapture *capture = cvCreateCameraCapture(0); cvNamedWindow("myWindow", CV_WINDOW_AUTOSIZE); IplImage * frame; while (true) { frame = cvQueryFrame(capture); cvShowImage("myWindow", frame); char c = cvWaitKey(33); if (c == 27) break; } cvReleaseCapture(&capture); cvDestroyWindow("myWindow"); } ```

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

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

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

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

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

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

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

和黑客斗争的 6 天!

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

点沙成金:英特尔芯片制造全过程揭密

“亚马逊丛林里的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统中微小参数的变化所引起的系统极大变化。 而在更长的时间尺度内,我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于时间与技艺的蝴蝶效应 公元前3000年,古埃及人将尼罗河中挖出的泥浆与纳特龙盐湖中的矿物盐混合,再掺入煅烧石灰石制成的石灰,由此得来了人...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

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

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

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

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

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

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

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

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

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

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

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

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

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

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

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

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中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多个条件是什么逻辑关系?条件判断在什么时候执...

你打算用Java 8一辈子都不打算升级到Java 14,真香

我们程序员应该抱着尝鲜、猎奇的心态,否则就容易固步自封,技术停滞不前。

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

一文带你入门Java Stream流,太强了

两个星期以前,就有读者强烈要求我写一篇 Java Stream 流的文章,我说市面上不是已经有很多了吗,结果你猜他怎么说:“就想看你写的啊!”你看你看,多么苍白的喜欢啊。那就“勉为其难”写一篇吧,嘻嘻。 单从“Stream”这个单词上来看,它似乎和 java.io 包下的 InputStream 和 OutputStream 有些关系。实际上呢,没毛关系。Java 8 新增的 Stream 是为...

立即提问
相关内容推荐