opencv release下程序运行报错,求指教ORZ

多相机参数标定。VS2015+opencv2.4.13
代码运行到匹配关系那一部分就会崩。虽然找到了问题在哪,但不会解决,求大神指教。报错内容为:0x00007FF8DCE3D3D8 (ucrtbase.dll) (calib_stitch.exe 中)处有未经处理的异常: 将一个无效参数传递给了将无效参数视为严重错误的函数。
下面是代码:
#include
#include
#include

#include "opencv2/core/core.hpp"
#include "opencv2/opencv_modules.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/stitching/detail/autocalib.hpp"
#include "opencv2/stitching/detail/blenders.hpp"
#include "opencv2/stitching/detail/camera.hpp"
#include "opencv2/stitching/detail/exposure_compensate.hpp"
#include "opencv2/stitching/detail/matchers.hpp"
#include "opencv2/stitching/detail/motion_estimators.hpp"
#include "opencv2/stitching/detail/seam_finders.hpp"
#include "opencv2/stitching/detail/util.hpp"
#include "opencv2/stitching/detail/warpers.hpp"
#include "opencv2/stitching/warpers.hpp"
#include "opencv2/features2d/features2d.hpp"

#include "opencv2/nonfree/nonfree.hpp"
#include

using namespace std;
using namespace cv;
using namespace cv::detail;

// Default command line args

bool preview = false;
bool try_gpu = false;
double work_megapix = -0.6; // 缩放参数
double seam_megapix = 0.1;
double compose_megapix = -1;
float conf_thresh = 1.f;
string features_type = "sift"; //orb surf sift
string ba_cost_func = "reproj"; //reproj ray
string ba_refine_mask = "xxllx";
bool do_wave_correct = true;
WaveCorrectKind wave_correct = detail::WAVE_CORRECT_HORIZ;
bool save_graph = true;
std::string save_graph_to;
string warp_type = "spherical"; //spherical cylindrical plane
int expos_comp_type = ExposureCompensator::GAIN_BLOCKS; //GAIN,OR NO
float match_conf = 0.3f;
string seam_find_type = "gc_color"; //no voronoi gc_color gc_colorgrad dp_color dp_colorgrad
int blend_type = Blender::MULTI_BAND; // Blender::FEATHER Blender::MULTI_BAND
float blend_strength = 5;//0就是关,默认5
string result_name = "result.jpg";

void detection(const vector imagelist, vector>& ransac_image_points_seq)
{
if (imagelist.size() % 2 != 0)
{
cout << "Error: the image list contains odd (non-even) number of elements\n";
return;
}

bool displayCorners = true;//true;
const int maxScale = 2;
const float squareSize = 1.f;  // Set this to your actual square size
                               // ARRAY AND VECTOR STORAGE:
Size boardSize = Size(11, 8);

vector<vector<Point2f>> imagePoints[2];
vector<vector<Point3f> > objectPoints;
Size imageSize;

int i, j, k, nimages = (int)imagelist.size() / 2;

imagePoints[0].resize(nimages);
imagePoints[1].resize(nimages);
vector<string> goodImageList;

for (i = j = 0; i < nimages; i++)
{
    for (k = 0; k < 2; k++)
    {
        const string& filename = imagelist[i * 2 + k];
        Mat img = imread(filename, 0);
        if (img.empty())
            break;
        if (imageSize == Size())
            imageSize = img.size();
        else if (img.size() != imageSize)
        {
            cout << "The image " << filename << " has the size different from the first image size. Skipping the pair\n";
            break;
        }
        bool found = false;
        vector<Point2f>& corners = imagePoints[k][j];
        for (int scale = 1; scale <= maxScale; scale++)
        {
            Mat timg;
            if (scale == 1)
                timg = img;
            else
                resize(img, timg, Size(), scale, scale);
            found = findChessboardCorners(timg, boardSize, corners,
                CV_CALIB_CB_ADAPTIVE_THRESH | CV_CALIB_CB_NORMALIZE_IMAGE);
            if (found)
            {
                if (scale > 1)
                {
                    Mat cornersMat(corners);
                    cornersMat *= 1. / scale;
                }
                break;
            }
        }
        if (displayCorners)
        {
            //cout << filename << endl;
            Mat cimg, cimg1;
            cvtColor(img, cimg, COLOR_GRAY2BGR);
            drawChessboardCorners(cimg, boardSize, corners, found);
            double sf = 640. / MAX(img.rows, img.cols);
            resize(cimg, cimg1, Size(), sf, sf);
            namedWindow("corners", 0);
            imshow("corners", cimg1);
            char c = (char)waitKey(1);
            if (c == 27 || c == 'q' || c == 'Q') //Allow ESC to quit
                exit(-1);
        }
        else
            putchar('.');
        if (!found)
            break;
        cornerSubPix(img, corners, Size(11, 11), Size(-1, -1), TermCriteria(CV_TERMCRIT_ITER + CV_TERMCRIT_EPS, 30, 0.01));
        /* 亚像素精确化 */
        //find4QuadCornerSubpix(img, corners, Size(5, 5)); //对粗提取的角点进行精确化

    }
    if (k == 2)
    {
        goodImageList.push_back(imagelist[i * 2]);
        goodImageList.push_back(imagelist[i * 2 + 1]);
        j++;
    }
}
cout << j << " pairs have been successfully detected.\n";
nimages = j;
if (nimages < 2)
{
    cout << "Error: too little pairs to run the calibration\n";
    return;
}

imagePoints[0].resize(nimages);
imagePoints[1].resize(nimages);


vector<vector<Point2f>> image_points_seq;
for (int i = 0; i < 2; i++)
{
    vector<Point2f> buf;
    for (int j = 0; j < imagePoints[i].size(); j++)
    {
        for (int k = 0; k < imagePoints[i][j].size(); k++)
        {
            buf.push_back(imagePoints[i][j][k]);
        }
    }
    image_points_seq.push_back(buf);
}

//RANSAC

cout << image_points_seq[0].size() << endl;
cout << image_points_seq[1].size() << endl;
vector<uchar> mask;
Mat h = findHomography(image_points_seq[0], image_points_seq[1], mask, CV_FM_RANSAC);

vector<Point2f> point1, point2;
for (int i = 0; i < image_points_seq[0].size(); i++)
{
    //if (mask[i] == 1)
    {
        point1.push_back(image_points_seq[0][i]);
        point2.push_back(image_points_seq[1][i]);
    }
}

ransac_image_points_seq.push_back(point1);
ransac_image_points_seq.push_back(point2);

//cout << imagePoints[0].size() << endl;
//cout << imagePoints[1].size() << endl;
//return imagePoints;

}

int main(int argc, char* argv[])
{
int64 app_start_time = getTickCount();

string xml_name = "144-146-147-1481.yaml";
vector<vector<string>> img_names;
vector<vector<string>>  names;
char file_name[256];


int num_pairs = 3;
int nums_pairs_count[4] = { 23,23,20 };

for (int i =0; i <= num_pairs; i++)
{
    vector<string> temp;
    for (int j = 1; j <= nums_pairs_count[i]; j++)
    {
        sprintf(file_name, "1234/%d/1/(%d).jpg", i, j);
        temp.push_back(file_name);
        sprintf(file_name, "1234/%d/2/(%d).jpg", i, j);
        temp.push_back(file_name);
    }
    names.push_back(temp);
}


//棋盘格检测
vector<vector<Point2f>> double_image_points_seq;
int match_num[4][4] = {0};
int match_start[4][4][2] = {0};

//vector<vector<Point2f>> ransac_image_points_seq;
//detection(names[0], ransac_image_points_seq);

//match_num[0][1] = ransac_image_points_seq[0].size();
//match_num[1][0] = ransac_image_points_seq[0].size();
//match_start[0][1] = 0;
//match_start[1][0] = 0;

//match_num.push_back(ransac_image_points_seq[0].size());

//cout << ransac_image_points_seq[0].size() << endl;
//cout << ransac_image_points_seq[1].size() << endl;

for (int i = 0; i < num_pairs; i++)
{

    vector<vector<Point2f>> ransac_image_points_seq;
    detection(names[i], ransac_image_points_seq);

    if (i != 0)
    {
        match_num[i][i + 1] = ransac_image_points_seq[0].size();
        match_num[i+1][i] = ransac_image_points_seq[0].size();

        match_start[i][i + 1][0] = match_num[i - 1][i];
        match_start[i][i + 1][1] = 0;

        match_start[i+1][i][0] = 0;
        match_start[i+1][i][1] = match_num[i - 1][i];


        for (int j = 0; j < ransac_image_points_seq[0].size(); j++)
        {
            double_image_points_seq[double_image_points_seq.size() - 1].push_back(ransac_image_points_seq[0][j]);
        }
        double_image_points_seq.push_back(ransac_image_points_seq[1]);
    }
    else
    {
        double_image_points_seq.push_back(ransac_image_points_seq[0]);
        double_image_points_seq.push_back(ransac_image_points_seq[1]);

        match_num[0][1] = ransac_image_points_seq[0].size();
        match_num[1][0] = ransac_image_points_seq[0].size();

        match_start[0][1][0] = 0;
        match_start[0][1][1] = 0;           
        match_start[1][0][0] = 0;
        match_start[1][0][1] = 0;
    }
}


//特征点
vector<ImageFeatures> features(num_pairs + 1);
for (int i = 0; i <= num_pairs; i++)
{
    vector<KeyPoint> keypoints;
    for (int j = 0; j < double_image_points_seq[i].size(); j++)
    {
        KeyPoint point;
        point.pt = double_image_points_seq[i][j];
        keypoints.push_back(point);
    }

    features[i].keypoints = keypoints;
    features[i].img_size = Size(2560, 1440);
    features[i].img_idx = i;
}

//匹配关系
vector<MatchesInfo> pairwise_matches;

for (int i = 0; i <= num_pairs; i++)
{
    for (int j = 0; j <= num_pairs; j++)
    {
        MatchesInfo matches_info;

        if(j==i+1 || j==i-1)
        {
            vector<DMatch> match(match_num[i][j]);
            vector<uchar> mask(match_num[i][j]);
            for (int n = 0; n < match_num[i][j]; n++)
            {
                match[n].queryIdx = match_start[i][j][0] + n;
                match[n].trainIdx = match_start[i][j][1] + n;
                mask[n] = 1;
            }
            matches_info.src_img_idx = i;
            matches_info.dst_img_idx = j;

            matches_info.matches = match;
            //info.inliers_mask = inliers_mask;
            //info.num_inliers = match_num[i][j];

            //vector<Point2f> pts_src, pts_dst;

            Mat src_points(1, static_cast<int>(matches_info.matches.size()), CV_32FC2);
            Mat dst_points(1, static_cast<int>(matches_info.matches.size()), CV_32FC2);
            for (int n = 0; n < match_num[i][j]; n++)
            {
                const DMatch& m = matches_info.matches[n];

                Point2f p = features[i].keypoints[m.queryIdx].pt;
                p.x -= features[i].img_size.width * 0.5f;
                p.y -= features[i].img_size.height * 0.5f;
                src_points.at<Point2f>(0, static_cast<int>(n)) = p;

                p = features[j].keypoints[m.trainIdx].pt;
                p.x -= features[j].img_size.width * 0.5f;
                p.y -= features[j].img_size.height * 0.5f;
                dst_points.at<Point2f>(0, static_cast<int>(n)) = p;

                //pts_src.push_back(features[i].keypoints[match[n].queryIdx].pt);
                //pts_dst.push_back(features[j].keypoints[match[n].trainIdx].pt);
            }
            //vector<uchar> mask;
            matches_info.H = findHomography(src_points, dst_points, matches_info.inliers_mask,CV_FM_RANSAC);
            //matches_info.H = h.clone();

            matches_info.num_inliers = 0;
            for (size_t i = 0; i < matches_info.inliers_mask.size(); ++i)
                if (matches_info.inliers_mask[i])
                    matches_info.num_inliers++;
            //info.confidence = 2;
            matches_info.confidence = matches_info.num_inliers / (8 + 0.3 * matches_info.matches.size());

            // Set zero confidence to remove matches between too close images, as they don't provide
            // additional information anyway. The threshold was set experimentally.
            matches_info.confidence = matches_info.confidence > 3. ? 0. : matches_info.confidence;


            //// Construct point-point correspondences for inliers only
            src_points.create(1, matches_info.num_inliers, CV_32FC2);
            dst_points.create(1, matches_info.num_inliers, CV_32FC2);
            int inlier_idx = 0;
            for (size_t n = 0; n < matches_info.matches.size(); ++n)
            {
                if (!matches_info.inliers_mask[n])
                    continue;

                const DMatch& m = matches_info.matches[n];

                Point2f p = features[i].keypoints[m.queryIdx].pt;
                p.x -= features[i].img_size.width * 0.5f;
                p.y -= features[i].img_size.height * 0.5f;
                src_points.at<Point2f>(0, inlier_idx) = p;

                p = features[j].keypoints[m.trainIdx].pt;
                p.x -= features[j].img_size.width * 0.5f;
                p.y -= features[j].img_size.height * 0.5f;
                dst_points.at<Point2f>(0, inlier_idx) = p;

                inlier_idx++;
            }
            // Rerun motion estimation on inliers only
            matches_info.H = findHomography(src_points, dst_points, CV_RANSAC);

        }
        else 
        {
            matches_info.src_img_idx = -1;
            matches_info.dst_img_idx = -1;
        }

        pairwise_matches.push_back(matches_info);//发现程序崩在哪一行了
    }
}


cout << pairwise_matches.size() << endl;

/*Mat img1 = imread(img_names[0], 1);
Mat img2 = imread(img_names[1], 1);

Mat out1, out2, out;
drawKeypoints(img1, features[0].keypoints, out1);
drawKeypoints(img1, features[0].keypoints, out2);

drawMatches(img1, features[0].keypoints, img2, features[1].keypoints, pairwise_matches[0].matches, out);
cv::namedWindow("out1", 0);
cv::imshow("out1", out);
cv::namedWindow("out2", 0);
cv::imshow("out2", out);
cv::namedWindow("out", 0);
cv::imshow("out", out);
cv::waitKey();*/

//for(int i=0; i<nu)


HomographyBasedEstimator estimator;
vector<CameraParams> cameras;
estimator(features, pairwise_matches, cameras);

for (size_t i = 0; i < cameras.size(); ++i)
{
    Mat R;
    cameras[i].R.convertTo(R, CV_32F);
    cameras[i].R = R;
    //cout << "Initial intrinsics #" << indices[i] + 1 << ":\n" << cameras[i].K() << endl;
}

Mat K1(Matx33d(
    1.2755404529239545e+03, 0., 1.3099971348805052e+03, 0.,
    1.2737998060528048e+03, 8.0764915313791903e+02, 0., 0., 1.
));
Mat K2(Matx33d(
    1.2832823446505638e+03, 0., 1.2250954954648896e+03, 0.,
    1.2831721912770793e+03, 7.1743301498758751e+02, 0., 0., 1.
));
Mat K3(Matx33d(
    1.2840711959594287e+03, 0., 1.2473666273838244e+03, 0.,
    1.2840499404560594e+03, 7.9051574509733359e+02, 0., 0., 1.));

Mat K4(Matx33d(
    1.2865853945042952e+03, 0., 1.1876049192856492e+03, 0.,
    1.2869927339670007e+03, 6.2306976561458930e+02, 0., 0., 1.
));

Mat K[4];
K[0] = K1.clone();
K[1] = K2.clone();
K[2] = K3.clone();
K[3] = K4.clone();

for (size_t i = 0; i < cameras.size(); ++i)
{
    K[i].convertTo(K[i], CV_32F);
}

for (size_t i = 0; i < cameras.size(); ++i)
{
    Mat R;
    cameras[i].R.convertTo(R, CV_32F);
    cameras[i].R = R;

    cameras[i].focal = 0.5*(K[i].at<float>(0, 0)+ K[i].at<float>(1, 1)); // Focal length
    cameras[i].ppx = K[i].at<float>(0,2); // Principal point X
    cameras[i].ppy = K[i].at<float>(1,2); ; // Principal point Y


    cout << cameras[i].K() << endl;
    //cout << "Initial intrinsics #" << indices[i] + 1 << ":\n" << cameras[i].K() << endl;
}




Ptr<detail::BundleAdjusterBase> adjuster;
if (ba_cost_func == "reproj") adjuster = new detail::BundleAdjusterReproj();
else if (ba_cost_func == "ray") adjuster = new detail::BundleAdjusterRay();
else
{
    cout << "Unknown bundle adjustment cost function: '" << ba_cost_func << "'.\n";
    return -1;
}
adjuster->setConfThresh(conf_thresh);
Mat_<uchar> refine_mask = Mat::zeros(3, 3, CV_8U);
if (ba_refine_mask[0] == 'x') refine_mask(0, 0) = 1;
if (ba_refine_mask[1] == 'x') refine_mask(0, 1) = 1;
if (ba_refine_mask[2] == 'x') refine_mask(0, 2) = 1;
if (ba_refine_mask[3] == 'x') refine_mask(1, 1) = 1;
if (ba_refine_mask[4] == 'x') refine_mask(1, 2) = 1;
adjuster->setRefinementMask(refine_mask);
for (int i = 0; i < features.size(); i++)
{
    features[i].descriptors = Mat();
}
(*adjuster)(features, pairwise_matches, cameras);

cout << "camera number: " << cameras.size() << endl;
cv::FileStorage fs(xml_name, cv::FileStorage::WRITE);
int num = cameras.size();
fs << "CameraNumber" << num;
//char file_name[256];
for (int i = 0; i<cameras.size(); i++)
{
    sprintf(file_name, "Focal_Camera%d", i);
    fs << file_name << cameras[i].focal;

    sprintf(file_name, "ppx_Camera%d", i);
    fs << file_name << cameras[i].ppx;

    sprintf(file_name, "ppy_Camera%d", i);
    fs << file_name << cameras[i].ppy;

    sprintf(file_name, "K_Camera%d", i);
    fs << file_name << cameras[i].K();

    sprintf(file_name, "R_Camera%d", i);
    fs << file_name << cameras[i].R;

}
//fs << "indices" << indices;

fs.release();
return 0;

}

图片说明
图片说明

c++

1个回答

你好我刚才看到你在我的提问下面评论,但是被删了,我就在这跟你说吧,我之前是内存处理的问题,release模式对这些问题比较严格,我在我的每个循环的开头和结尾都加了个内存释放的语句,然后就能运行了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
opencv debug可以 release报错

opencv配置正确。debug没有问题。release下提示在倒数5,6行使用了未初始化的b1,b2(是注释掉的两行,b1,b2在main函数下第三行声明),代码生成失败。想问问是什么原因。我把这两行注释掉了,程序可以运行,但是不delete好么,会不会有什么弊端。以下是代码。 ``` #include<cv.h> #include<highgui.h> #include<stdio.h> #include<stdlib.h> #include<math.h> #include<cxcore.h> //#define N 500 #define E 3.3554//本文用基于T分布的变化监测 int main() { int i,j,k,dif[3][9],n=1,m,c[8][2]={{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1},{1,0},{1,1}},e[8]={1,0,1,0,1,0,1,0}; char *a1,*a2,*a3,**b1,**b2,**b3; float s[3],f[3],t[3],sum[240][960]; IplImage*fram,*pimg1,*pimg2,*pimg3; //读视频 printf("稍微等一会儿\n"); CvCapture *capture; capture=cvCreateFileCapture("C:\\Users\\luxu\\Documents\\Visual Studio 2013\\Projects\\Project4\\Debug\\video1.avi");//为了方便将测试视频重命名为test.avi fram=cvQueryFrame(capture); cvSaveImage("test1.bmp",fram); pimg1=cvLoadImage("test1.bmp",1); //创建一个同规格的图像用来存储背景图像 CvSize size=cvSize(pimg1->width,pimg1->height); pimg3=cvCreateImage(size,pimg1->depth,3); a3=pimg3->imageData; b3=new char*[pimg3->height]; for(i=0;i<pimg3->height;i++) b3[i]=&a3[i*pimg3->widthStep]; int **count; count=new int*[240]; for(i=0;i<240;i++) count[i]=new int[320]; //初始化 //printf("1"); for(i=0;i<240;i++) for(j=0;j<320;j++) count[i][j]=0; //printf("1\n"); for(i=0;i<240;i++) for(j=0;j<960;j++) sum[i][j]=0; //printf("1\n"); while(n<200)//取前100帧图像用于重建背景 {//一维数组变二维 b1=new char*[pimg1->height]; a1=pimg1->imageData; for(i=0;i<pimg1->height;i++) b1[i]=&a1[i*pimg1->widthStep]; fram=cvQueryFrame(capture); if(!fram) break; cvSaveImage("test2.bmp",fram); pimg2=cvLoadImage("test2.bmp",1); b2=new char*[pimg2->height]; a2=pimg2->imageData; for(i=0;i<pimg2->height;i++) b2[i]=&a2[i*pimg2->widthStep]; for(i=0;i<3;i++) { s[i]=0; f[i]=0; } //printf("正常1\n"); for(i=1;i<pimg1->height-1;i++) { for(j=1;j<pimg1->width-1;j++) { for(k=0;k<8;k++) { //选取领域的窗口为3*3对每一个像素点进行T分布变换监测 dif[0][k]=unsigned char(b2[i+c[k][0]][3*(j+c[k][1])])-unsigned char(b1[i+c[k][0]][3*(j+c[k][1])]); dif[1][k]=unsigned char(b2[i+c[k][0]][3*(j+c[k][1])+1])-unsigned char(b1[i+c[k][0]][3*(j+c[k][1])+1]); dif[2][k]=unsigned char(b2[i+c[k][0]][3*(j+c[k][1])+2])-unsigned char(b1[i+c[k][0]][3*(j+c[k][1])+2]); f[0]+=dif[0][k]; f[1]+=dif[1][k]; f[2]+=dif[2][k]; } dif[0][8]=unsigned char(b2[i][3*j])-unsigned char(b1[i][3*j]); dif[1][8]=unsigned char(b2[i][3*j+1])-unsigned char(b1[i][3*j+1]); dif[2][8]=unsigned char(b2[i][3*j+2])-unsigned char(b1[i][3*j+2]); f[0]+=dif[0][8]; f[1]+=dif[1][8]; f[2]+=dif[2][8]; f[0]/=9; f[1]/=9; f[2]/=9; for(k=0;k<9;k++) { s[0]+=(dif[0][k]-f[0])*(dif[0][k]-f[0]); s[1]+=(dif[1][k]-f[1])*(dif[1][k]-f[1]); s[2]+=(dif[2][k]-f[2])*(dif[2][k]-f[2]); } s[0]/=8; s[1]/=8; s[2]/=8; s[0]=sqrt(s[0]);s[1]=sqrt(s[1]);s[2]=sqrt(s[2]); //计算t t[0]=(3*f[0]/s[0]); t[1]=(3*f[1]/s[1]); t[2]=(3*f[2]/s[2]); if(fabs(t[0])<E&&fabs(t[1])<E&&fabs(t[2])<E)//这里的E是当α=0.001自由度为8时差T分布表所得的置信区间 { sum[i][3*j]+=(unsigned char)b2[i][3*j]; sum[i][3*j+1]+=(unsigned char)b2[i][3*j+1]; sum[i][3*j+2]+=(unsigned char)b2[i][3*j+2]; count[i][j]+=1; } } } cvReleaseImage(&pimg1); pimg1=cvLoadImage("test2.bmp",1); cvReleaseImage(&pimg2); n++; //printf("%d\n",n); } //printf("%d\n",b1[8][22]); for(i=1;i<pimg1->height-1;i++) { for(j=1;j<pimg1->width-1;j++) { m=count[i][j]; //printf("%d %d\n",m,j); //m=100; //计算背景图像的像素值 if(m!=0) { b3[i][3*j]=sum[i][3*j]/m; b3[i][3*j+1]=sum[i][3*j+1]/m; b3[i][3*j+2]=sum[i][3*j+2]/m; //if(i==2) //printf("%f %f %f\n",sum[i][3*j],sum[i][3*j+1],sum[i][3*j+2]); //printf("%d %d %d %d\n",b3[i][3*j],b3[i][3*j+1],b3[i][3*j+2],j); } } //printf("%d\n",i); } cvSaveImage("backgroud1.bmp",pimg3); //cvSaveImage("test1.bmp",pimg1); cvReleaseImage(&pimg1); cvReleaseImage(&pimg3); //delete []b1; //delete []b2; for(i=0;i<240;i++) delete []count[i]; delete []count; return 0; } ```

opencv 图片合成报错 访问冲突

#include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/core/core.hpp> using namespace cv; int main() { Mat img = imread("1.jpg"); Mat logo =imread("2.jpg"); namedWindow("[1]原图"); imshow("[1]原图",img); namedWindow("[2]logo图"); imshow("[2]logo图", logo); Mat imgROI; imgROI = img(Rect(0,0,logo.cols,logo.rows)); addWeighted(imgROI, 0.5, logo, 0.3,0., imgROI); namedWindow("成图"); imshow("成图", img); imwrite("合成图.jpg",img); waitKey(); return 0; } ``` 运行报错显示:0x00007FF8150DC002 (opencv_world300.dll)处(位于 图像处理.exe 中)引发的异常: 0xC0000005: 读取位置 0x000002A222EB3000 时发生访问冲突。 测试发现把imwrite()注释掉就不再报错 ,求大神解答怎么回事 ```

opencv自带objdetector.hpp报错

class CV_EXPORTS SimilarRects { public: SimilarRects(double _eps) : eps(_eps) {} inline bool operator()(const Rect& r1, const Rect& r2) const { double delta = eps*( std::min(r1.width, r2.width) + std::min(r1.height, r2.height))*0.5; return std::abs(r1.x - r2.x) <= delta && std::abs(r1.y - r2.y) <= delta && std::abs(r1.x + r1.width - r2.x - r2.width) <= delta && std::abs(r1.y + r1.height - r2.y - r2.height) <= delta; } double eps; }; 1. 对eps*( std::min(r1.width, r2.width) + std::min(r1.height, r2.height))*0.5;进行报错 error2059 2589 分别是::语法错误 2. 修改后double delta = eps*( (std::min)(r1.width, r2.width) + (std::min)(r1.height, r2.height))*0.5; 又会报 LNK2001 无法解析的外部符号 "public: __cdecl cv::VideoCapture::VideoCapture(int)" (??0VideoCapture@cv@@QEAA@H@Z)这种错误 求大神们解答

vs2015 cmake编译opencv3.1+opencv_contrib报错

在OPENCV_EXTRA_MODULES_PATH,添加opencv_contrib目录后报错,求问是什么问题啊? CMake Error at /Users/Documents/opencv/source/opencv-3.2.0/cmake/OpenCVUtils.cmake:1045 (file): file DOWNLOAD cannot open file for write. Call Stack (most recent call first): /Users/Documents/opencv/source/opencv_contrib-master/modules/dnn/cmake/OpenCVFindLibProtobuf.cmake:32 (ocv_download) /Users/Documents/opencv/source/opencv_contrib-master/modules/dnn/CMakeLists.txt:5 (include) CMake Error at /Users/Documents/opencv/source/opencv-3.2.0/cmake/OpenCVUtils.cmake:1049 (message): Failed to download . Status= Call Stack (most recent call first): /Users/Documents/opencv/source/opencv_contrib-master/modules/dnn/cmake/OpenCVFindLibProtobuf.cmake:32 (ocv_download) /Users/Documents/opencv/source/opencv_contrib-master/modules/dnn/CMakeLists.txt:5 (include)

VS2012配置opencv2.4.10运行报错

配置测试的项目名称为:opencvtest,运行的时候提示opencvtest.exe不是内部或外部命令,也不是可运行的程序

VS2013上MFC界面,编译成功,运行报错!!!求教

问题描述:同样的项目,在debug下编译成功,但运行报错,如下图: ![图片说明](https://img-ask.csdn.net/upload/201812/02/1543744285_332719.png) 修复了VS2013,报错。。。 查找错误日志: 电脑->管理->事件查看器->Windows日志->应用程序查看错误日志显示如下: ![图片说明](https://img-ask.csdn.net/upload/201812/02/1543744499_272557.png) 报错如下:“F:\DEMO\PoliceImgSys4.0\Debug\opencv_imgproc230d.dll”的激活上下文生成失败。 找不到从属程序集 Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"。 请使用 sxstrace.exe 进行详细诊断。 解决:其中激活上下文文件,找不到从属集的有:opencv_core230d.dll,opencv_legacy230d.dll,opencv_highgui230d.dll,opencv_imgproc230d.dll等。找到对应的缺失文件放入.exe文件夹下,依旧报错。。。 问题描述:同样的项目,在release下编译成功,但运行报错,如下图: ![图片说明](https://img-ask.csdn.net/upload/201812/02/1543744898_726633.png) 点击忽略,界面可以正常运行。 但是点击文件下的.exe可执行文件文件,报错如下图,还是哪里有问题: ![图片说明](https://img-ask.csdn.net/upload/201812/02/1543745079_413182.png) 尝试了很多方法,都没能成功,希望有哪位大佬给与帮助,感谢!!!****

opencv 级联分类器训练报错问题

如下,请问各位老师应该要怎么解决? ![图片说明](https://img-ask.csdn.net/upload/201811/12/1542029356_262265.png)

OpenCV3.3 在运行到函数末尾时,Mat::release()函数出错

![图片说明](https://img-ask.csdn.net/upload/201804/15/1523784871_164835.png),报错信息“引发了异常:写入权限冲突。this->u是0x01”,一头雾水,不知什么原因造成的,求助!

opencv运行的时候报错,求解决办法

gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 代码运行这一部分的时候经常不定期的发出这种错误 cv2.error: C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:11111: error: (-215) scn == 3 || scn == 4 in function cv::cvtColor 有没有什么好的解决办法呢

opencv4在vs2017下配置以后运行测试程序一直报错

如图所示,计算机环境变量等均以配置,不知为何一直报错![图片说明](https://img-ask.csdn.net/upload/201812/21/1545378739_376814.png)![图片说明](https://img-ask.csdn.net/upload/201812/21/1545378748_588932.png)![图片说明](https://img-ask.csdn.net/upload/201812/21/1545378774_168807.png)![图片说明](https://img-ask.csdn.net/upload/201812/21/1545378780_751525.png)![图片说明](https://img-ask.csdn.net/upload/201812/21/1545378788_218955.png)

linux安装opencv,执行cmake .报错

CMakeError.log内容: cc1plus: 警告:命令行选项“-Wmissing-prototypes”对 C/ObjC 是有效的,但对 C++ 无效 cc1plus: 警告:命令行选项“-Wstrict-prototypes”对 C/ObjC 是有效的,但对 C++ 无效 cc1plus: 警告:命令行选项“-Wno-missing-declarations”对 C/ObjC 是有效的,但对 C++ 无效 cc1plus: 错误:无法识别的命令行选项“-Wno-misleading-indentation” make[1]: *** [CMakeFiles/cmTC_16c2d.dir/src.cxx.o] 错误 1 make[1]: Leaving directory `/home/d5000/fujian/opencv-3.2.0/CMakeFiles/CMakeTmp' make: *** [cmTC_16c2d/fast] 错误 2

opencv问题,关于debug可以通过而release却不能运行

opencv问题,今天用vs做了个图像拼接的例子,但关于debug可以通过而release却不能运行求大神解惑![图片说明](https://img-ask.csdn.net/upload/201603/24/1458812452_258711.png)

vs2015中使用Opencv3.1有报错

电脑win10, vs 2015, Opencv 3.1 运行一个简单的看图程序就报错error C3861: “_InterlockedIncrement”: 找不到标识符 自己憋出来一个笨方法,就是在头文件中添加windows.h。 但是不添加就是不行,求助,网上说的环境配置(库、包含、附加依赖项,以及系统path都配好了) ![图片说明](https://img-ask.csdn.net/upload/201708/01/1501550541_77572.jpg)

opencv模型加载的时候报错,用官方的模型也不行

我在载入模型的时候,如果用的自己的模型或者把模型换目录会出现“face_cascade = cv2.CascadeClassifier("/home/lj/data/haarcascade_frontalface_alt.xml") error: /home/lj/opencv/opencv-3.0.0/modules/core/src/persistence.cpp:1807: error: (-212) /home/lj/data/haarcascade_frontalface_alt.xml(0): Too long string or a last string w/o newline in function icvXMLSkipSpaces”的错误,请问这是什么问题?

使用基于vc2010的opencv2411总是报错

c++,计算机视觉小白,作业需要。 代码如下: ``` #include "opencv2/core/core.hpp" #include "opencv2/highgui/highgui.hpp" int main() { cv::Mat image= cv::imread("A.jpg"); cv::imshow("MY",image); cv::waitKey(5000); return 1; } ``` 代码没有报错,运行出了问题,可能是环境配置有问题,试过很多安装方法,用过很多opencv版本,都不好用。感谢各位大神!像有的大佬说的,改为图片路径也试过,仍然报错。(使用路径G:\\A.bmp) 窗口信息:OpenCV Error: Assertion failed (size.width>0 && size.height>0) in cv::imshow, file ..\..\..\..\opencv\modules\highgui\src\window.cpp, line 261 ![图片说明](https://img-ask.csdn.net/upload/201812/14/1544749291_435467.png)

opencv cvGEMM总是报错,附代码,求大神纠正

在第一个cvGEMM那里就报错了,控制台也没提示错误地方 ``` float x, y; float a1, a2, a3, a4, a5, b1; float data[10][5]; float dab[10]; CvMat* curve_p = cvCreateMat(5,1,CV_32FC1); CvMat* A = cvCreateMat(n, 5, CV_32FC1); CvMat* b = cvCreateMat(n, 1, CV_32FC1); //获取十个数据 for (int i = 1; i <= 10; i++) { int pt = (20 - 1)*i / 10; x = 2; y = 6; a1 = x*x - y*y; a2 = x*y; a3 = x; a4 = y; a5 = 1; b1 = -y*y; data[i - 1][0] = a1; data[i - 1][1] = a2; data[i - 1][2] = a3; data[i - 1][3] = a4; data[i - 1][4] = a5; dab[i - 1] = b1; } cvSetData(A, data, A->step); cvSetData(b, dab, b->step); CvMat *E1, *E2, *E3; E1 = cvCreateMat(5, 5, CV_32FC1); E2 = cvCreateMat(5, 5, CV_32FC1); E3 = cvCreateMat(5, n, CV_32FC1); cvGEMM(A, A, 1, NULL, 0, E1, CV_GEMM_A_T); cvInvert(E1, E2, 0); cvGEMM(E2, A, 1, NULL, 0, E3, CV_GEMM_B_T); cvGEMM(E3, b, 1, NULL, 0, curve_p); cvReleaseMat(&A); cvReleaseMat(&b); cvReleaseMat(&E1); cvReleaseMat(&E2); cvReleaseMat(&E3); ```

Python程序中能调用外部库但是cmd中运行opencv工具报错没有外部的库

``` #-*- encoding: UTF-8 -*- import cv2 import numpy import argparse import Image import time from naoqi import ALProxy from naoqi import ALBroker def nothing(x): pass def choseHSV(filePath): img=cv2.imread(filePath,1) hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) cv2.namedWindow("image",cv2.WINDOW_NORMAL) cv2.createTrackbar('minH','image',0,179,nothing) cv2.createTrackbar('minS','image',0,255,nothing) cv2.createTrackbar('minV','image',0,255,nothing) cv2.createTrackbar('maxH','image',0,179,nothing) cv2.createTrackbar('maxS','image',0,255,nothing) cv2.createTrackbar('maxV','image',0,255,nothing) while(1): minH=cv2.getTrackbarPos('minH','image') minS=cv2.getTrackbarPos('minS','image') minV=cv2.getTrackbarPos('minV','image') maxH=cv2.getTrackbarPos('maxH','image') maxS=cv2.getTrackbarPos('maxS','image') maxV=cv2.getTrackbarPos('maxV','image') thresholdMin = numpy.array([minH, minS, minV]) thresholdMax = numpy.array([maxH, maxS, maxV]) mask=cv2.inRange(hsv,thresholdMin,thresholdMax) res=cv2.bitwise_and(img,img,mask = mask) cv2.imshow('image',res) k=cv2.waitKey(1) if k==ord('q'): break cv2.destroyAllWindows() def readRobotTemperature(): pass def takePhotos(cameraID, robotIP, port): CAMERA = ALProxy("ALVideoDevice", robotIP, port) CAMERA.setActiveCamera(cameraID) # VGA 设置分辨率为2:640*480 0:160*120 resolution = 2 # RGB 设置颜色空间为RGB colorSpace = 11 videoClient = CAMERA.subscribe("python_client", resolution, colorSpace, 5) #设置曝光度模式 CAMERA.setCamerasParameter(videoClient,22,2) time.sleep(0.5) #获取照片 naoImage = CAMERA.getImageRemote(videoClient) CAMERA.unsubscribe(videoClient) imageWidth = naoImage[0] imageHeight = naoImage[1] array = naoImage[6] #装换为PIL图片格式 img = Image.fromstring("RGB", (imageWidth, imageHeight), array) img.save("photo.png", "PNG") def test(): broker = ALBroker("broker","0.0.0.0",0,"127.0.0.1",9559) MOTION = ALProxy("ALMotion") MOTION.moveTo(1,0,0) if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--filePath", type=str, help="file path.") args = parser.parse_args() choseHSV(args.filePath) #takePhotos(0, "192.168.1.103", 9559) #test() ``` 以上就是代码,代码是一个tools工具,没有问题,但是一用cmd命令运行以下命令: tools.py --filePath pic.png (最后那是一个图片) 就会报错没有XXX库,我调试了一下,发现所有的外部库它都会报错,不知道这是个什么问题,有没有大神能帮我看看,谢谢了先

VS2015+openCV3.2.0运行openCV3.2.0的samples运行不出来

为什么我运行openCV3.2.0的samples大部分都运行不出来,运行情况有以下几种,1、把CommandLineParser类注释掉了,直接读取路径,运行出来了,不过能运行出来的很少;2、大部分把CommandLineParser类注释掉了,直接读取路径,不显示错误,运行不出来;3、大部分直接运行,不显示错误,运行不出来。我是在VS2015+openCV3.2.0做的。谢谢大家告知!

图像分类OpenCV中svm使用报错

参考代码:https://blog.csdn.net/xq920831/article/details/85052318 第123行 用我自己的图片集的时候会报错: cv2.error: OpenCV(3.4.1) C:\projects\opencv-python\opencv\modules\ml\src\data.cpp:298: error: (-215) (layout == ROW_SAMPLE && responses.rows == nsamples) || (layout == COL_SAMPLE && responses.cols == nsamples) in function cv::ml::TrainDataImpl::setData 有人能帮帮我吗

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

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

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

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

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

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

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

数据结构与算法思维导图

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

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

和黑客斗争的 6 天!

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

Linux 会成为主流桌面操作系统吗?

整理 |屠敏出品 | CSDN(ID:CSDNnews)2020 年 1 月 14 日,微软正式停止了 Windows 7 系统的扩展支持,这意味着服役十年的 Windows 7,属于...

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

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

学习总结之HTML5剑指前端(建议收藏,图文并茂)

前言学习《HTML5与CSS3权威指南》这本书很不错,学完之后我颇有感触,觉得web的世界开明了许多。这本书是需要有一定基础的web前端开发工程师。这本书主要学习HTML5和css3,看...

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

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

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

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

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

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

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

新一代神器STM32CubeMonitor介绍、下载、安装和使用教程

关注、星标公众号,不错过精彩内容作者:黄工公众号:strongerHuang最近ST官网悄悄新上线了一款比较强大的工具:STM32CubeMonitor V1.0.0。经过我研究和使用之...

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

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

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

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

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

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

冒泡排序动画(基于python pygame实现)

本项目效果初始截图如下 动画见本人b站投稿:https://www.bilibili.com/video/av95491382 本项目对应github地址:https://github.com/BigShuang python版本:3.6,pygame版本:1.9.3。(python版本一致应该就没什么问题) 样例gif如下 ======================= 大爽歌作,mad

Redis核心原理与应用实践

Redis核心原理与应用实践 在很多场景下都会使用Redis,但是到了深层次的时候就了解的不是那么深刻,以至于在面试的时候经常会遇到卡壳的现象,学习知识要做到系统和深入,不要把Redis想象的过于复杂,和Mysql一样,是个读取数据的软件。 有一个理解是Redis是key value缓存服务器,更多的优点在于对value的操作更加丰富。 安装 yum install redis #yum安装 b...

现代的 “Hello, World”,可不仅仅是几行代码而已

作者 |Charles R. Martin译者 | 弯月,责编 | 夕颜头图 |付费下载自视觉中国出品 | CSDN(ID:CSDNnews)新手...

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

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

!大部分程序员只会写3年代码

如果世界上都是这种不思进取的软件公司,那别说大部分程序员只会写 3 年代码,恐怕就没有程序员这种职业。

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

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

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

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

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

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

HTTP与HTTPS的区别

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

程序员毕业去大公司好还是小公司好?

虽然大公司并不是人人都能进,但我仍建议还未毕业的同学,尽力地通过校招向大公司挤,但凡挤进去,你这一生会容易很多。 大公司哪里好?没能进大公司怎么办?答案都在这里了,记得帮我点赞哦。 目录: 技术氛围 内部晋升与跳槽 啥也没学会,公司倒闭了? 不同的人脉圈,注定会有不同的结果 没能去大厂怎么办? 一、技术氛围 纵观整个程序员技术领域,哪个在行业有所名气的大牛,不是在大厂? 而且众所...

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

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

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

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

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

立即提问
相关内容推荐