OpenCV 的 Mat 内存错误?

新学习Mat类型,编示例程序

#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;

int main(){
    Mat image=imread("test.jpg");
    imwrite("test1.jpg",image);
}

结果运行时出错:
“0x76322F71 处(位于 CVTest.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x0063FA04 处。”

求教是什么地方出错了?
IDE为VS2013,其它环境都设置好了,以前用IplImage也一直没出过问题。

1个回答

你把Debug版本的库和Release的库混着加载了吧?要只加载一个版本的才行,不能混着用

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

double SAD = 0; Mat temp; temp = l - r; cout << "temp=" << endl; cout << temp << endl; //Mat t; temp = abs(temp); cout << "temp=" << endl; cout << temp << endl; for (int i = 0;i < temp.rows;i++) { uchar *t = temp.ptr<uchar>(i); for (int j=0;j < temp.cols;j++) { SAD = SAD + t[j];///////////这里这里这里 } } return SAD; 为啥我这样访问矩阵元素没成功,我的SAD没得到temp矩阵里面的元素累加和?我已经检验过我的temp矩阵,里面有值 还有: int SAD = 0; Mat temp; temp = l - r; cout << "temp=" << endl; cout << temp << endl; //Mat t; temp = abs(temp); cout << "temp=" << endl; cout << temp << endl; for (int i = 0;i < temp.rows;i++) { //uchar *t = temp.ptr<uchar>(i); for (int j=0;j < temp.cols;j++) { SAD = SAD + temp.at<uchar>(i, j);////中断中断中断 } } return SAD; 我用at函数会中断是怎么回事

OpenCV Mat问题,想把数组加到矩阵的某一行,赋值出现错误

for(int i=a;i<10;) { //想把数组加到矩阵的某一行 i++; float *p; p=colsmean;//colsmean是个float数组 for(int j=0;j<64;j++) { //matsurfdes_addrow是一个Mat矩阵 matsurfdes_addrow.ptr<float>(i)[j]=(*p); p++; } } matsurfdes_addrow.copyTo(matsurfdes); //错误就出在这里,内存溢出,不知为什么,希望好心传道解惑,先行感谢!

opencv 内存溢出,访问冲突

如下代码,每次运行均出现内存错误,而且可能不同; ``` #include "stdafx.h" #include <opencv2/opencv.hpp> using namespace cv; using namespace std; int main() { Mat image = imread("Sign.jpg", 1); if (!image.data) { printf("Cannot read the image!"); } imshow("Sign.jpg", image); Mat grayImage; cvtColor(image, grayImage, CV_BGR2GRAY); vector<KeyPoint> keyPoints; FAST(grayImage, keyPoints, 55); int total = keyPoints.size(); for (int i = 0; i < total; i++) { circle(image, Point((int)keyPoints[i].pt.x, (int)keyPoints[i].pt.y), 5, Scalar(0, 0, 255), -1, 8, 0); } imshow("Corners", image); waitKey(); return 0; } ``` opencv3.2+vs2015

opencv3.1 resize报内存错误

cv::Mat src1; src1 = cv::imread(picture_path); cv::Size dsize = cv::Size(256, 256); cv::Mat src2 = cv::Mat(dsize, CV_32S); resize(src1, src2, dsize); --报错 ![图片说明](https://img-ask.csdn.net/upload/201703/12/1489302828_375835.jpg) ![图片说明](https://img-ask.csdn.net/upload/201703/12/1489302838_465572.jpg) ![图片说明](https://img-ask.csdn.net/upload/201703/12/1489302847_38835.jpg) 我读取的是三通道rgb的图片,用的opencv3.1 64位的,请大神指导下,急!拜谢! 补充下:在两个项目里都有这种问题,另外一段类似的代码本来可以用,现在莫名奇妙的也和这个一样的报错,感觉不是代码的问题啊。。。

opencv3使用addWeight函数出现错误

下面是我的代码 错误显示为: 0x00007FFD8EC79E08 处(位于 ConsoleApplication7.exe 中)引发的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x0000008EA356EEB0 处。 经过设置断点已经确定是addWeight处出现的问题了。 ``` #include<opencv2/core/core.hpp> #include<opencv2\highgui\highgui.hpp> using namespace cv; int main() { Mat girl = imread("girl.jpg"); namedWindow("1.动漫图"); imshow("1.动漫图", girl); Mat image = imread("dota.jpg", 1); Mat logo = imread("dota_logo.jpg"); namedWindow("2.Yuanhua"); imshow("2.Yuanhua", image); namedWindow("3.Yuanhua"); imshow("3.Yuanhua", logo); Mat imageROI; imageROI = image(Rect(800,350,logo.cols,logo.rows)); addWeighted(imageROI, 0.5,logo,0.3,0.,imageROI); namedWindow("4.Yuanhua+logo"); imshow("4.Yuanhua+logo", image); imwrite("生成得.jpg", image); waitKey(); return 0; } ```

opencv用boundingrect找最大区域时崩溃

代码的功能是调用摄像头,然后找出视频帧中的红色区域,再找到其中最大的区域作为ROI。 用笔记本集成的摄像头的时候可以正常跑。 换成usb外接摄像头,编译连接都没问题,就是run的时候崩溃了 //#include "stdafx.h" #include "opencv2/opencv.hpp" #include <cv.h> #include <iostream> using namespace std; using namespace cv; //漫水填充 void fillHole(const Mat srcBw, Mat &dstBw) { Size m_Size = srcBw.size(); Mat Temp = Mat::zeros(m_Size.height + 2, m_Size.width + 2, srcBw.type());//延展图像 srcBw.copyTo(Temp(Range(1, m_Size.height + 1), Range(1, m_Size.width + 1))); cv::floodFill(Temp, Point(0, 0), Scalar(255,255,255)); //cv::floodFill(Temp, Point(30, 29), Scalar(255, 0, 0), 0, Scalar(10, 10, 10), Scalar(10, 10, 10)); Mat cutImg;//裁剪延展的图像 Temp(Range(1, m_Size.height + 1), Range(1, m_Size.width + 1)).copyTo(cutImg); dstBw = srcBw | (~cutImg); } int main(int argc, char** argv) { //定义扫描图像的循环变量 int i = 0; int j = 0; //通过摄像头采集视频 VideoCapture capture(0); //读取视频. //VideoCapture capture("E:/weixian.mp4"); //视频总帧数 //long totalFrameNumber = capture.get(CV_CAP_PROP_FRAME_COUNT); //num是一个计数的flag. int num = 1; while (1) //while (num <= totalFrameNumber) { //IplImage* frame; Mat frame1, frame; //将捕获图像存入frame变量 capture >> frame1; blur(frame1, frame1, Size(7, 7)); //缩放倍数 double fScale = 0.5; //目标图像尺寸 CvSize czSize; czSize.width = frame1.cols*fScale; czSize.height = frame1.rows*fScale; cv::resize(frame1, frame, cv::Size(czSize.width, czSize.height), (0, 0), (0, 0), cv::INTER_LINEAR); cv::Mat rgbImage = frame, hsvImage; //转换到hsv空间 cv::cvtColor(rgbImage, hsvImage, cv::COLOR_BGR2HSV); //为了获取图像的尺寸 //这里把图像类型转换 IplImage* tempImage = &IplImage(hsvImage); IplImage* extractionImage = &IplImage(hsvImage); IplImage* reversionImage = &IplImage(hsvImage); IplImage* grayImage = &IplImage(hsvImage); IplImage* binaryImage = &IplImage(hsvImage); //显示两个空间下的图像 imshow("RGB", rgbImage); //imshow("HSV", hsvImage); for (i = 0; i < tempImage->height; i++) { for (j = 0; j < tempImage->width; j++) { //获取像素点为(j, i)点的HSV的值 CvScalar s_hsv = cvGet2D(tempImage, i, j); /* opencv 的H范围是0~180,红色的H范围大概是(0~8)∪(160,180) S是饱和度,一般是大于一个值,S过低就是灰色(参考值S>80), V是亮度,过低就是黑色,过高就是白色(参考值220>V>50)。 */ CvScalar s; if (!(((s_hsv.val[0]>0) && (s_hsv.val[0]<8)) || (s_hsv.val[0]>178) && (s_hsv.val[0]<180))) { s.val[0] = 0; s.val[1] = 0; s.val[2] = 0; cvSet2D(tempImage, i, j, s); } //else这小段是自己加的,如果是红色,就置为白色. else { s.val[0] = 180; s.val[1] = 30; s.val[2] = 255; cvSet2D(tempImage, i, j, s); } } } //提取红色分量 cvConvert(tempImage, extractionImage); //cvNamedWindow("Extraction"); //cvShowImage("Extraction", extractionImage); //颜色空间变换回RGB cvCvtColor(extractionImage, reversionImage, cv::COLOR_HSV2BGR); //cvNamedWindow("Reversion"); //cvShowImage("Reversion", reversionImage); //这里如果转灰度,会出现内存泄漏. //由于前边定义每个图像都用的取址运算符 //因为grayImge指向的是hsvImage的地址,而后者一直在变 //所以此处gray也一直在变 //RGB图像转灰度图 //cvCvtColor(reversionImage, grayImage, cv::COLOR_BGR2GRAY); //cvNamedWindow("Gray"); //cvShowImage("Gray", grayImage); //灰度图转二值图 cvThreshold(grayImage, binaryImage, 100, 255, CV_THRESH_BINARY); //cvThreshold(reversionImage, binaryImage, 150, 255, CV_THRESH_BINARY); //cvNamedWindow("Binary"); //cvShowImage("Binary", binaryImage); //5*5正方形,8位uchar型,全1结构元素 cv::Mat element5(5, 5, CV_8U, cv::Scalar(1)); cv::Mat closed,opened,temp,final,cimage; //cv::vector<vector<cv::Point>> contours(10000); temp = Mat(binaryImage); //高级形态学运算函数 cv::morphologyEx(temp, opened, cv::MORPH_CLOSE, element5); cv::morphologyEx(temp, closed, cv::MORPH_CLOSE, element5); //cvNamedWindow("Opened"); //imshow("Opened", opened); //cvNamedWindow("Closed"); //imshow("Closed", closed); fillHole(closed, final); cvNamedWindow("Final"); imshow("Final", final); Canny(final, cimage, 150, 250); //cvNamedWindow("Canny"); //imshow("Canny", cimage); cv::vector<vector<cv::Point>> contours; vector<Vec4i> hierarchy; cv::findContours(cimage, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE,Point()); //cv::findContours(cimage, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point()); // 寻找最大连通域 double maxArea = 0; vector<cv::Point> maxContour; for (size_t i = 0; i < contours.size(); i++) { double area = cv::contourArea(contours[i]); if (area > maxArea) { maxArea = area; maxContour = contours[i]; } //cout << maxArea << endl; } //cout << maxArea << endl; //cout << contours.size() << endl; //cout << i << endl; //cout << maxContour << endl; // 将轮廓转为矩形框 cv::Rect maxRect = cv::boundingRect(maxContour); // 显示连通域 cv::Mat result1, result2; final.copyTo(result1); final.copyTo(result2); for (size_t i = 0; i < contours.size(); i++) { cv::Rect r = cv::boundingRect(contours[i]); cv::rectangle(result1, r, cv::Scalar(255)); } //cv::imshow("all regions", result1); //cv::waitKey(); cv::rectangle(result2, maxRect, cv::Scalar(0, 255, 0), 3); cv::imshow("largest region", result2); if (maxArea>8000) { cv::imshow("largest region", result2); } /* */ waitKey(20); //视频帧数加1. num = num + 1; } return 0; } ``` ``` ![图片说明](https://img-ask.csdn.net/upload/201808/16/1534430156_429439.png) ![图片说明](https://img-ask.csdn.net/upload/201808/16/1534430084_178855.png) 好像是boundingrect那里出错了,但是为什么集成摄像头就可以呢?请教各位

opencv代码问题,为什么会这么多错误

这段代码为什么会有这么多错误,怎么修改 #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/features2d/features2d.hpp" #include <stdlib.h> #include <stdio.h> using namespace cv; using namespace std; // 计算图像矩 void cacMoments(cv::Mat src) { Mat srcGray; vector<vector<Point> > contours; vector<Vec4i> hierarchy; // 高斯滤波 GaussianBlur(src, src, Size(3, 3), 0.1, 0, BORDER_DEFAULT); // 灰度转换 cvtColor(src, srcGray, CV_RGB2GRAY); // 轮廓边界检测 findContours(srcGray, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0)); // 绘制边界 // drawContours(src, contours, -1, cvScalar(0,0,255)); printf("Number of contours: %d\n", (int)contours.size()); // 计算轮廓矩 vector<Moments> mu(contours.size()); for (int i = 0; i < (int)contours.size(); i++) { mu[i] = moments(contours[i], false); } // 分析矩计算图像相关特征 for (int i = 0; i < (int)contours.size(); i++) { // 面积 重心 边界轮廓长度 int area = mu[i].m00; int cx = mu[i].m10 / mu[i].m00; int cy = mu[i].m01 / mu[i].m00; int perimeter = arcLength(contours.at(i), true); // 椭圆 if (int(contours.at(i).size()) <= 5) { continue; } else { RotatedRect rRect = fitEllipse(contours.at(i)); double orientation = rRect.angle; double orientation_rads = orientation*3.1416 / 180; double majorAxis = rRect.size.height > rRect.size.width ? rRect.size.height : rRect.size.width; double minorAxis = rRect.size.height > rRect.size.width ? rRect.size.width : rRect.size.height; // 圆形度 离心率 周长 直径 double roundness = pow(perimeter, 2) / (2 * 3.1416*area); double eccentricity = sqrt(1 - pow(minorAxis / majorAxis, 2)); double ratio = (minorAxis / majorAxis) * 100; double diameter = sqrt((4 * area) / 3.1416); // 输出相关特征信息 printf("Area: %d\n", area); printf("Perimeter: %d\n", perimeter); printf("Major Axis: %.1f\n", majorAxis); printf("Minor Axis: %.1f\n", minorAxis); printf("Orientation: %.1f\n", orientation); printf("Roundness: %.1f\n", roundness); printf("Eccentricity: %.1f\n", eccentricity); printf("Ratio: %.1f\n", ratio); printf("Diameter: %.1f\n", diameter); printf("\n"); // 绘制矩形及椭圆 ellipse(src, rRect, cvScalar(0, 255, 0)); rectangle(src, boundingRect(contours.at(i)), cvScalar(0, 0, 255)); // 绘制相关坐标 //line(src, Point(cx-30, cy), Point(cx+30, cy), cvScalar(0,0,255)); //line(src, Point(cx, cy-30), Point(cx, cy+30), cvScalar(0,0,255)); // 绘制起始线 line(src, Point(cx, cy), Point((int)(cx + 30 * cos(orientation_rads)), (int)(cy + 30 * sin(orientation_rads))), cvScalar(255, 0, 0), 1); // 输出图像起始 char pChar[100]; sprintf(pChar, "Ori: %.0f", orientation); putText(src, pChar, Point(cx, cy), FONT_HERSHEY_SIMPLEX, 0.4, cvScalar(255)); } } cv::imshow("result", src); } int main() { cv::Mat srcImage = imread("1.png"); if (!srcImage.data) return -1; cv::imshow("srcImage", srcImage); // 计算轮廓矩 cacMoments(srcImage); cv::waitKey(0); return(0); } 严重性 代码 说明 项目 文件 行 禁止显示状态 错误(活动) 无法打开 源 文件 "opencv2/imgproc/imgproc.hpp" ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 2 错误(活动) 无法打开 源 文件 "opencv2/highgui/highgui.hpp" ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 3 错误(活动) 无法打开 源 文件 "opencv2/features2d/features2d.hpp" ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 4 错误(活动) 名称必须是命名空间名 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 7 错误(活动) 不允许使用不完整的类型 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 10 错误(活动) 后面有“::”的名称一定是类名或命名空间名 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 10 错误(活动) 应输入“)” ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 10 错误(活动) 应输入“;” ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 11 错误(活动) 此声明没有存储类或类型说明符 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 18 错误(活动) 未定义标识符 "src" ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 18 错误(活动) 应输入“)” ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 18 错误(活动) 此声明没有存储类或类型说明符 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 20 错误(活动) 未定义标识符 "srcGray" ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 20 错误(活动) 应输入“)” ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 20 错误(活动) 此声明没有存储类或类型说明符 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 24 错误(活动) 应输入“)” ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 24 错误(活动) vector 不是模板 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 26 错误(活动) 未定义标识符 "Moments" ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 26 错误(活动) 未定义标识符 "contours" ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 26 错误(活动) 应输入声明 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 27 错误(活动) 未定义标识符 "sqrt" ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 55 错误(活动) 此声明没有存储类或类型说明符 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 57 错误(活动) 应输入“)” ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 57 错误(活动) 此声明没有存储类或类型说明符 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 58 错误(活动) 应输入“)” ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 58 错误(活动) 此声明没有存储类或类型说明符 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 59 错误(活动) 应输入“)” ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 59 错误(活动) 此声明没有存储类或类型说明符 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 60 错误(活动) 应输入“)” ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 60 错误(活动) 此声明没有存储类或类型说明符 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 61 错误(活动) 应输入“)” ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 61 错误(活动) 此声明没有存储类或类型说明符 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 62 错误(活动) 应输入“)” ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 62 错误(活动) 此声明没有存储类或类型说明符 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 63 错误(活动) 应输入“)” ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 63 错误(活动) 此声明没有存储类或类型说明符 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 64 错误(活动) 应输入“)” ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 64 错误(活动) 此声明没有存储类或类型说明符 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 65 错误(活动) 应输入“)” ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 65 错误(活动) 此声明没有存储类或类型说明符 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 66 错误(活动) 此声明没有存储类或类型说明符 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 68 错误(活动) 未定义标识符 "src" ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 68 错误(活动) 应输入“)” ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 68 错误(活动) 此声明没有存储类或类型说明符 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 69 错误(活动) 未定义标识符 "src" ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 69 错误(活动) 应输入“)” ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 69 错误(活动) 此声明没有存储类或类型说明符 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 74 错误(活动) 未定义标识符 "src" ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 74 错误(活动) 应输入“)” ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 74 错误(活动) 此声明没有存储类或类型说明符 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 78 错误(活动) 应输入“)” ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 78 错误(活动) 此声明没有存储类或类型说明符 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 79 错误(活动) 未定义标识符 "src" ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 79 错误(活动) 应输入“)” ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 79 错误(活动) 应输入声明 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 80 错误(活动) 应输入声明 ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\ConsoleApplication1\main.cpp 83 错误 C1083 无法打开包括文件: “opencv2/imgproc/imgproc.hpp”: No such file or directory ConsoleApplication1 d:\基于视觉的副驾驶座儿童乘坐提醒系统设计程序文档20180417\阈值化处理\consoleapplication1\main.cpp 2

VS2017下opencv_4.0.1使用SIFT算法时为何总是在detect函数(detectAndCompute也是)处报内存错误?

环境: * windows * vistual studio2017 * opencv_4.0.1 前提: * 已配置过opencv_contrib-4.0.1 * 使用 debug ✖64 问题描述: 总是在detect(detectAndCompute也是)这个函数位置处出现错误: 0x00007FFB87B3A388 处(位于 image.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x0000001D36F1E9F0 处。 代码如下: ``` #include <iostream> #include <opencv2/opencv.hpp> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/xfeatures2d.hpp> #include <opencv2/xfeatures2d/nonfree.hpp> #include <opencv2/features2d/features2d.hpp> #include <vector> using namespace std; using namespace cv; using namespace xfeatures2d; using namespace cv::xfeatures2d; int main() { //Feature2D siftfd; SIFT siftfd; //Ptr<SIFT> siftfd = SIFT::create(); //SiftFeatureDetector siftfd; //sift s; //s.create(); Mat image1 = imread("car1.jpg"); Mat image2 = imread("car2.jpg"); namedWindow("car1_before", WINDOW_FREERATIO); namedWindow("car2_before", WINDOW_FREERATIO); imshow("car1_before", image1); imshow("car2_before", image2); //ptr<siftfeaturedetector> siftfd = siftfeaturedetector::create(); //ptr<sift> siftfd = sift::create(); //feature2d siftfd; //vector<KeyPoint>kp1, kp2; //keypoint类型的容器 vector<KeyPoint>kp1; Mat draw; //kp1.resize(100); //kp2.resize(100); //siftfd.detectAndCompute(image1, Mat(), kp1, draw); siftfd.detect(image1, kp1); Mat outimage1; drawKeypoints(image1, kp1, outimage1); namedWindow("car1_after", WINDOW_FREERATIO); imshow("car1_after", outimage1); waitKey(); return 0; ``` 报错情况: ![图片说明](https://img-ask.csdn.net/upload/201903/02/1551507714_139491.png)

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

多相机参数标定。VS2015+opencv2.4.13 代码运行到匹配关系那一部分就会崩。虽然找到了问题在哪,但不会解决,求大神指教。报错内容为:0x00007FF8DCE3D3D8 (ucrtbase.dll) (calib_stitch.exe 中)处有未经处理的异常: 将一个无效参数传递给了将无效参数视为严重错误的函数。 下面是代码: #include <iostream> #include <fstream> #include <string> #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 <opencv2/calib3d/calib3d.hpp> 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<string> imagelist, vector<vector<Point2f>>& 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; } ![图片说明](https://img-ask.csdn.net/upload/201904/12/1555002609_315025.png) ![图片说明](https://img-ask.csdn.net/upload/201904/12/1555002619_770672.png)

人脸识别 opencv train方法

遍历文件中所以人脸图像(尺寸已全部相同),已Mat类型存放到vector images中,在遍历过程中images是可读取的,imshow(WinName, images[i]);可以显示图像。调用完遍历并存到vector的函数之后,在modle->train(images,labels);中出现内存地址错误,见附图。请问是怎么回事?![图片说明](https://img-ask.csdn.net/upload/201701/03/1483432496_351161.png)

opencv 操作像素报错 cv::Exception

我在网上看到了很多种方法去操作图中的像素,但是无论用哪个都出现这样的错误: 0x7611b727 处有未经处理的异常: Microsoft C++ 异常: 内存位置 0x0039fa94 处的 cv::Exception。 编译是正确的。 我的代码: #include <iostream> #include <string> #include <opencv2/opencv.hpp> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> int main(int argc, char** argv) { //int i = 0; cv::Mat foreground; //for(int i = 0; i < 320; i++){ // for(int j = 0; j < 240; j++){ // foreground.at<cv::Vec3b>(i,j)[0] = 0; // foreground.at<cv::Vec3b>(i,j)[1] = 0; // foreground.at<cv::Vec3b>(i,j)[2] = 0; // foreground.at<uchar>(i,j) = 0; // } //} for (int j=0; j<foreground.rows; j++) { uchar* data= foreground.ptr<uchar>(j); for (int i=0; i<foreground.cols; i++) { data[i] = 255; } } //for(int i=0;i<foreground.rows;i++) // for(int j=0;j<foreground.cols;j++) // foreground.at<uchar>(i,j)=255; cv::imshow("video", foreground); return 0; } 里面种种被注释的也就是网上提到的一些方法。问题到底出在哪里了?没初始化么?可是我现在没注释掉的,就是逐像素赋值啊?我做的是运动目标跟踪,本来是在提取出运动区域以后(一张二值化的图)想根据运动区域的轮廓取出目标来,然后可以算直方图、角点什么的。在整体的代码里面,foreground是已经计算除的前景,所以也是有图像的,一样报错。 另外有哪位大神愿意被骚扰以后碰到问题直接问?求助啊

opencv+cuda关于GpuMat数据转递问题

萌新刚刚接触opencv+cuda不久,还不是很熟练,现在碰到了一个问题,不知道有没有大佬知道解决方法 实际问题中我想定义一个GpuMat类型的数组,例如cv::cuda::GpuMat cu_proj[10][128]; 然后传递给核函数的时候就显示如下错误 error : no suitable constructor exists to convert from "cv::cuda::GpuMat [10][128]" to "cv::cuda::PtrStepSz<uchar1>" 我网上搜到的都是单个GpuMat的传递,不知道我这种情况有没有解决方法呀?以及如果有,在核函数中应该怎么索引呢?我试过cu_proj[x][y](i, y),也显示错误: error : no operator "[]" matches these operands 感激不尽!

我用VS2015+MFC+Opencv3.0进行图像操作再显示到picture控件上出现了一些问题

这是点击按钮的响应函数 void CCrazyDlg::OnBnClickedOk() { CString FilePath; CFileDialog FileDlg(TRUE); if (IDOK == FileDlg.DoModal()) { //获取FileOpen对话框返回的路径名 FilePath = FileDlg.GetPathName(); //GetPathName返回的是CString类型,要经过转换为string类型才能使用imread打开图片 //std::string pathName(FilePath.GetBuffer()); std::string tempName = (LPCSTR)CStringA(FilePath); const char*pathName = tempName.c_str(); Mat bin; //读取图片 Mat im = imread(pathName); // 读图,并转化为灰度图 threshold(im, bin, 120, 255, CV_THRESH_BINARY | THRESH_OTSU); //显示图片 ShowMat(bin, GetDlgItem(IDC_SHOW)->GetSafeHwnd()); } } 这是ShowMat 函数 int CCrazyDlg::ShowMat(Mat img, HWND hWndDisplay) { if (img.channels()<3) { return -1; } //构造将要显示的Mat版本图片 RECT rect; ::GetClientRect(hWndDisplay, &rect); Mat imgShow(abs(rect.top - rect.bottom), abs(rect.right - rect.left), CV_8UC3); resize(img, imgShow, imgShow.size()); //在控件上显示要用到的CImage类图片 ATL::CImage CI; int w = imgShow.cols;//宽 int h = imgShow.rows;//高 int channels = imgShow.channels();//通道数 CI.Create(w, h, 8 * channels); //CI像素的复制 uchar *pS; uchar *pImg = (uchar *)CI.GetBits();//得到CImage数据区地址 int step = CI.GetPitch(); for (int i = 0; i<h; i++) { pS = imgShow.ptr<uchar>(i); for (int j = 0; j<w; j++) { for (int k = 0; k<3; k++) *(pImg + i*step + j * 3 + k) = pS[j * 3 + k]; //注意到这里的step不用乘以3 } } //在控件显示图片 HDC dc; dc = ::GetDC(hWndDisplay); CI.Draw(dc, 0, 0); ::ReleaseDC(hWndDisplay, dc); CI.Destroy(); return 0; } 我调试到threshold()那里就停止运行,错误信息是0x7734C42D 处(位于 Crazy.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x0039DFB4 处。求解释,我困扰了好久了

关于opencv中的imwrite函数的报错问题

我用opencv来识别一个文件夹中大约100多张的图片的人脸,并且截下来保存到另一个文件夹,然后就报了这个错:error: (-215:Assertion failed) !_img.empty() in function 'cv::imwrite' 但是我看我保存人头的那个文件夹里又已经有二十多张人脸了,还有一大半没有识别,怎么会没有图片呢,麻烦大家帮我解决一下吧。

opencv中的imread函数问题

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

opencv下surf代码出错显示未经处理的异常: 0xC0000005

#include "opencv2/core/core.hpp" #include "opencv2/features2d/features2d.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/nonfree/nonfree.hpp" #include <iostream> using namespace cv; int main(int argc, char** argv) { //【0】改变console字体颜色 system("color 2F"); //【0】显示帮助文字 //【1】载入源图片并显示 Mat srcImage1 = imread("F:\\01.jpg", 1); Mat srcImage2 = imread("F:\\02.jpg", 1); if (!srcImage1.data || !srcImage2.data)//检测是否读取成功 { printf("读取图片错误,请确定目录下是否有imread函数指定名称的图片存在~! \n"); return false; } imshow("原始图1", srcImage1); imshow("原始图2", srcImage2); //【2】定义需要用到的变量和类 int minHessian = 400;//定义SURF中的hessian阈值特征点检测算子 SurfFeatureDetector detector(minHessian);//定义一个SurfFeatureDetector(SURF) 特征检测类对象 std::vector<KeyPoint> keypoints_1, keypoints_2;//vector模板类是能够存放任意类型的动态数组,能够增加和压缩数据 //【3】调用detect函数检测出SURF特征关键点,保存在vector容器中 detector.detect(srcImage1, keypoints_1); detector.detect(srcImage2, keypoints_2); //【4】绘制特征关键点 Mat img_keypoints_1; Mat img_keypoints_2; drawKeypoints(srcImage1, keypoints_1, img_keypoints_1, Scalar::all(-1), DrawMatchesFlags::DEFAULT); drawKeypoints(srcImage2, keypoints_2, img_keypoints_2, Scalar::all(-1), DrawMatchesFlags::DEFAULT); //【5】显示效果图 imshow("特征点检测效果图1", img_keypoints_1); imshow("特征点检测效果图2", img_keypoints_2); waitKey(60000); return 0; } 网上说是有空指针或内存越界,哪儿出错了,有时还有桟损坏

用opencv做人脸识别的时候遇到个程序报错问题问题

我在使用大姨妈v博主做的opencv人脸识别教程 在第五篇教程里面 加载训练好的模型 那一句程序会报错 但是注释掉程序就可以正常运行 并且可以识别出本人 但是按道理来说 不是应该加载训练好的模型 才能识别人吗 不是很懂 求大佬消除一下我心中的疑惑 ``` //face_recog_from_video.cpp 定义控制台应用程序的入口点。 #include "opencv2/opencv.hpp" #include "opencv2/face.hpp" #include <stdio.h> #include<iostream> using namespace std; using namespace cv; using namespace cv::face; /** Function Headers */ void detectAndDisplay(Mat frame); static void read_csv(const string& filename, vector<Mat>& images, vector<int>& labels, int max, int min, char separator); /** Global variables */ String face_cascade_name = "D:/opencv3.4.0+contrib/install/etc/haarcascades/haarcascade_frontalface_alt2.xml"; CascadeClassifier face_cascade; Ptr<EigenFaceRecognizer> modelPCA = EigenFaceRecognizer::create();// 创建特征脸模型 EigenFaceRecognizer String window_name = "Capture - Face Recognition"; /** @function main */ int main(int argc, const char** argv) { string csvFile = "D:/outface/orlfaces/list.txt"; vector<Mat> images; vector<int> labels; int CountMax = 9, CountMin = 0; // 读取csv文件 try { read_csv(csvFile, images, labels, CountMax, CountMin, ';'); //读取csvFile中所有的img和label } catch (cv::Exception & e) // 异常检查 { cerr << "Error opening file\" " << csvFile << "\".reason: " << e.msg << endl; exit(-1); } // 若未读取到足够图片,也退出 if (images.size() <= 1) { string errMsg = "THis demo needs at least 2 images to work.please add images!"; CV_Error(CV_StsError, errMsg); } cout << "train1.读取ok" << endl; // 训练模型,并将训练好的人脸模型保存到.xml中 modelPCA->train(images, labels); //训练 modelPCA->save("MyFacePcaModel.xml"); cout << "train2.创建脸模型ok" << endl; // 视频采集 VideoCapture capture; Mat frame; //-- 1. Load the cascades if (!face_cascade.load(face_cascade_name)) { printf("--(!)Error loading face cascade\n"); return -1; }; //-- 2. Read the video stream capture.open(0); //打开摄像头 if (!capture.isOpened()) { printf("--(!)Error opening video capture\n"); return -1; } while (capture.read(frame)) //读取帧 { if (frame.empty()) { printf(" --(!) No captured frame -- Break!"); break; } //-- 3. Apply the classifier to the frame detectAndDisplay(frame); if (waitKey(10) == 'k') { break; } // escape } return 0; } /** @function detectAndDisplay */ void detectAndDisplay(Mat frame) { std::vector<Rect> faces; Mat frame_gray; cvtColor(frame, frame_gray, COLOR_BGR2GRAY); //BGR 转化为灰度图 equalizeHist(frame_gray, frame_gray); //直方图均衡化 //-- Detect faces face_cascade.detectMultiScale(frame_gray, faces, 1.1, 2, 0 | CASCADE_SCALE_IMAGE, Size(60, 60)); for (size_t i = 0; i < faces.size(); i++) { Point center(faces[i].x + faces[i].width / 2, faces[i].y + faces[i].height / 2); // 人脸中心坐标 ellipse(frame, center, Size(faces[i].width / 2, faces[i].height / 2), 0, 0, 360, Scalar(255, 0, 255), 4, 8, 0); // 椭圆 Mat faceROI = frame_gray(faces[i]); Mat face_test; resize(faceROI, face_test, Size(92, 112)); // 调整大小为92*112 double confidence; int predictPCA; //modelPCA->load("MyFacePcaModel.xml");//加载模型 modelPCA->predict(face_test, predictPCA, confidence); cout << "the predict result is " << predictPCA << endl << "confidence is " << confidence << endl; if (predictPCA == 0) { putText(frame, "Hello lisa", Point(faces[i].x, faces[i].y), FONT_HERSHEY_SIMPLEX, 1.5, Scalar(0, 0, 255), 2); } } //-- Show what you got imshow(window_name, frame); } static void read_csv(const string& filename, vector<Mat>& images, vector<int>& labels, int max, int min, char separator) { std::ifstream file(filename.c_str(), ifstream::in); // 以in模式(读取文件模式)打开文件 ,实际是将filename文件关联给 流file if (!file) { string error_message = "No valid input file was given,please check the given filename"; CV_Error(CV_StsBadArg, error_message); } int ii = 0; /**********************读取文件.txt内容****************************/ string line, path, label; // [1]读取file文件中的一行字符串给 line while (getline(file, line, '\n')) // 控制:直到读到file文件末尾(eof标识),才跳出while { // [2]将line整行字符串读取到lines(流)中 stringstream lines(line); //区别->lines是流,读取字符时,指针会随流而动;而line是string,固定的,下文中的读取每次都是从line头开始 // [3]读取文件中的路径和标签 getline(lines, path, separator); //此时光标已走到path之后的位置(即;分号处) getline(lines, label); // [4]将图片和标签加入imgs 和 labels if ((path.empty() == 0) && (label.empty() == 0)) { if (ii % 10 <= max && ii % 10 >= min) //默认每个类别共10张照片 { Mat img = imread(path, 0); //第二个参数为0 !!! //Mat img = imread(ImageFileAddress, CV_LOAD_IMAGE_GRAYSCALE),CV_LOAD_IMAGE_GRAYSCALE值为 0,指灰图(原本为“CV_LOAD_IMAGE_UNCHANGED”) if (img.data != 0) { images.push_back(img); // 将图片 添加到images中 labels.push_back(atoi(label.c_str())); } } if (ii < 9) ii++; else ii = 0; } } } ```

尝试用opencv读取多个图片出错无法运行

Size image_size;//图像的尺寸 Size board_size = Size(9, 6); //标定板上每行、列的角点数 vector<Point2f> image_points_buf; //缓存每幅图像上检测到的角点 vector<vector<Point2f>> image_points_seq; //保存检测到的所有角点 /*提取角点*/ char filename[10]; for (size_t image_num = 1; image_num <= IMGCOUNT; image_num++) { sprintf_s(filename, "%d.jpg", image_num); Mat imageInput = imread(filename); if (!findChessboardCorners(imageInput, board_size, image_points_buf)) { cout << "can not find chessboard corners!\n";//找不到角点 return ; } else { Mat view_gray; cvtColor(imageInput, view_gray, CV_RGB2GRAY); /*亚像素精确化*/ find4QuadCornerSubpix(view_gray, image_points_buf, Size(5, 5));//对粗提取的角点进行精确化 drawChessboardCorners(view_gray, board_size, image_points_buf, true);//用于在图片中标记角点 image_points_seq.push_back(image_points_buf);//保存亚像素角点 imshow("Camera Calibration", view_gray);//显示图片 waitKey(500);//停半秒 } image_size.width = imageInput.cols; image_size.height = imageInput.rows; imageInput.release(); } 报错是0x00007FFDA3C5A799 处(位于 角点确定.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x0000009F9A0FD820 处。

软件测试入门、SQL、性能测试、测试管理工具

软件测试2小时入门,让您快速了解软件测试基本知识,有系统的了解; SQL一小时,让您快速理解和掌握SQL基本语法 jmeter性能测试 ,让您快速了解主流来源性能测试工具jmeter 测试管理工具-禅道,让您快速学会禅道的使用,学会测试项目、用例、缺陷的管理、

计算机组成原理实验教程

西北工业大学计算机组成原理实验课唐都仪器实验帮助,同实验指导书。分为运算器,存储器,控制器,模型计算机,输入输出系统5个章节

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

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

winfrom中嵌套html,跟html的交互

winfrom中嵌套html,跟html的交互,源码就在里面一看就懂,很简单

玩转Python-Python3基础入门

总课时80+,提供源码和相关资料 本课程从Python零基础到纯Python项目实战。内容详细,案例丰富,覆盖了Python知识的方方面面,学完后不仅对Python知识有个系统化的了解,让你从Python小白变编程大牛! 课程包含: 1.python安装 2.变量、数据类型和运算符 3.选择结构 4.循环结构 5.函数和模块 6.文件读写 7.了解面向对象 8.异常处理

程序员的兼职技能课

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

HoloLens2开发入门教程

本课程为HoloLens2开发入门教程,讲解部署开发环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

基于VHDL的16位ALU简易设计

基于VHDL的16位ALU简易设计,可完成基本的加减、带进位加减、或、与等运算。

MFC一站式终极全套课程包

该套餐共包含从C小白到C++到MFC的全部课程,整套学下来绝对成为一名C++大牛!!!

利用Verilog实现数字秒表(基本逻辑设计分频器练习)

设置复位开关。当按下复位开关时,秒表清零并做好计时准备。在任何情况下只要按下复位开关,秒表都要无条件地进行复位操作,即使是在计时过程中也要无条件地进行清零操作。 设置启/停开关。当按下启/停开关后,将

董付国老师Python全栈学习优惠套餐

购买套餐的朋友可以关注微信公众号“Python小屋”,上传付款截图,然后领取董老师任意图书1本。

Python可以这样学(第一季:Python内功修炼)

董付国系列教材《Python程序设计基础》、《Python程序设计(第2版)》、《Python可以这样学》配套视频,讲解Python 3.5.x和3.6.x语法、内置对象用法、选择与循环以及函数设计与使用、lambda表达式用法、字符串与正则表达式应用、面向对象编程、文本文件与二进制文件操作、目录操作与系统运维、异常处理结构。

计算机操作系统 第三版.pdf

计算机操作系统 第三版 本书全面介绍了计算机系统中的一个重要软件——操作系统(OS),本书是第三版,对2001年出版的修订版的各章内容均作了较多的修改,基本上能反映当前操作系统发展的现状,但章节名称基

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

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

Vue.js 2.0之全家桶系列视频课程

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,通俗易懂

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

150讲轻松搞定Python网络爬虫

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

SEIR课程设计源码与相关城市数据.rar

SEIR结合学报与之前博客结合所做的一些改进,选择其中三个城市进行拟合仿真SEIR结合学报与之前博客结合所做的一些改进,选择其中三个城市进行拟合仿真SEIR结合学报与之前博客结合所做的一些改进,选择其

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

Java面试题大全(2020版)

发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environ...

定量遥感中文版 梁顺林著 范闻捷译

这是梁顺林的定量遥感的中文版,由范闻捷等翻译的,是电子版PDF,解决了大家看英文费时费事的问题,希望大家下载看看,一定会有帮助的

GIS程序设计教程 基于ArcGIS Engine的C#开发实例

张丰,杜震洪,刘仁义编著.GIS程序设计教程 基于ArcGIS Engine的C#开发实例.浙江大学出版社,2012.05

人工智能-计算机视觉实战之路(必备算法+深度学习+项目实战)

系列课程主要分为3大阶段:(1)首先掌握计算机视觉必备算法原理,结合Opencv进行学习与练手,通过实际视项目进行案例应用展示。(2)进军当下最火的深度学习进行视觉任务实战,掌握深度学习中必备算法原理与网络模型架构。(3)结合经典深度学习框架与实战项目进行实战,基于真实数据集展开业务分析与建模实战。整体风格通俗易懂,项目驱动学习与就业面试。 建议同学们按照下列顺序来进行学习:1.Python入门视频课程 2.Opencv计算机视觉实战(Python版) 3.深度学习框架-PyTorch实战/人工智能框架实战精讲:Keras项目 4.Python-深度学习-物体检测实战 5.后续实战课程按照自己喜好选择就可以

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

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

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

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

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

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

去除异常值matlab程序

数据预处理中去除异常值的程序,matlab写成

用verilog HDL语言编写的秒表

在秒表设计中,分模块书写。用在七段数码管上显示。输入频率是1KHZ.可以显示百分秒,秒,分。如要显示小时,只需修改leds里的代码和主模块代码。改程序以通过硬件电路验证。完全正确。

[透视java——反编译、修补和逆向工程技术]源代码

源代码。

用QUARTUS设计模可变计数器器

用QUARTUS设计摸20|60的模可变计数器,文本设计

相关热词 c# 解析cad c#数字格式化万 c#int转byte c#格式化日期 c# wpf 表格 c# 实现ad域验证登录 c#心跳包机制 c#使用fmod.dll c#dll vb 调用 c# outlook
立即提问
相关内容推荐