【Ubuntu】基于C++实现人脸识别( 六 )

<< endl;return 0;}
下面是我在开发过程中的终端实际操作,包括解决代码报错过程:
解决报错参考文章:
fatal error: /.hpp: No such file or。但是更加建议将头文件改成 # "//.hpp",但是我直到学完了才意识到这个问题,所以按照上述方法解决“报错1”算是作弊了 。解决Linux下 C++库文件的链接问题解决的 警告
# 下面是报错1lyl@ubuntu:~/桌面$ g++ main.cpp -o main -lopencv_highguimain.cpp:2:10: fatal error: opencv2/opencv.hpp: 没有那个文件或目录2 | #include "opencv2/opencv.hpp"|^~~~~~~~~~~~~~~~~~~~compilation terminated.lyl@ubuntu:~/桌面$ sudo ln -s /usr/include/opencv4/opencv2 /usr/include/[sudo] lyl 的密码: # 下面是报错2lyl@ubuntu:~/桌面$ g++ main.cpp -o main -lopencv_highgui/usr/bin/ld: /tmp/cc2bwNwg.o: in function `main':main.cpp:(.text+0x2e): undefined reference to `cv::VideoCapture::VideoCapture(int, int)'/usr/bin/ld: main.cpp:(.text+0x3a): undefined reference to `cv::VideoCapture::isOpened() const'/usr/bin/ld: main.cpp:(.text+0xa9): undefined reference to `cv::VideoCapture::~VideoCapture()'/usr/bin/ld: main.cpp:(.text+0xcf): undefined reference to `cv::VideoCapture::~VideoCapture()'collect2: error: ld returned 1 exit statuslyl@ubuntu:~/桌面$ g++ main.cpp -o main -lopencv_videoio# 下面是报错3lyl@ubuntu:~/桌面$ ./main[ WARN:0] global ../modules/videoio/src/cap_gstreamer.cpp (935) open OpenCV | GStreamer warning: Cannot query video position: status=0, value=http://www.kingceram.com/post/-1, duration=-1Camera open success.lyl@ubuntu:~/桌面$ vim main.cpp ################################### 将打开摄像头的代码改成:VideoCapture cap(0, cv::CAP_V4L2);##################################lyl@ubuntu:~/桌面$ g++ main.cpp -o main -lopencv_videoiolyl@ubuntu:~/桌面$ ./mainCamera open success.
3.4 编程-图像采集(下)
前面已经打开了摄像头,现在来正式通过摄像头采集图像 。
//终端编译指令/g++ main.cpp -o main -lopencv_videoio -lopencv_core -lopencv_highgui//cpp源代码/#include #include "opencv2/opencv.hpp"using namespace std;using namespace cv;int main() {// 1.打开摄像头//VideoCapture cap(0);VideoCapture cap(0, cv::CAP_V4L2);// 打开(默认的)摄像头0(编译时加上-lopencv_videoio)if(!cap.isOpened()) {// 检查摄像头是否成功打开cout << "Camera open failed!" << endl;return -1;}cout << "Camera open success." << endl;// 2.显示视频Mat color_image; // 定义一帧图像(注意因为用到了mat,所以编译时加上-lopencv_core)for(;;) {cap >> color_image;// 获取一帧图像imshow("video", color_image); // 在“video”窗口中显示图片(编译时加上-lopencv_highgui)waitKey(50);// 等待50ms(20fps)}return 0;}
图3-3 最后的运行结果
实际终端运行效果
lyl@ubuntu:~/桌面$ vim main.cpp ################################ 把新代码添加进来###############################lyl@ubuntu:~/桌面$ g++ main.cpp -o main -lopencv_videoio -lopencv_core -lopencv_highguilyl@ubuntu:~/桌面$ ./mainCamera open success.^C
第四章 人脸检测 4.1 编程-图像处理
因为彩色照片所包含的信息量很大,所以对彩色照片进行人脸检测难度大、准确度低,所以一般都先将彩色照片转换成灰度图,再进行人脸检测 。所以本节的目标在于对摄像头拍摄的彩色照片进行图像预处理:
彩色图片转换成灰度图 。用到了“. Image ”中的“” 。直方图均衡化 。用到了“. Image ”中的“” 。
注:使用拍摄到的图片默认是BGR格式 。
1. 彩色图片转换成灰度图
//终端编译指令/g++ main.cpp -o main -lopencv_videoio -lopencv_core -lopencv_highgui//cpp源代码/#include