转自:https://www.jianshu.com/p/b50dc83503d3
- Install Python
python 2.7
- Install OpenCV 3.3.0
Script
$ vim opencv.sh3.3.0-20180429-yuan
#!/bin/bash
echo "========================================"
echo "Install OpenCV 3.3.0"
echo "========================================"
echo "-> install dependency"
echo "========================================"
#sudo apt-get install build-essential
#sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
#sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
echo "-> cmake"
echo "========================================"
#cmake ..
echo "-> make"
echo "========================================"
#make
echo "-> install"
echo "========================================"
#sudo make install
echo "-> check"
echo "========================================"
pkg-config --modversion opencv
echo "========================================"
echo "Installation finished"
Update CMake
可行:
sudo apt-get install software-properties-mmon
sudo add-apt-repository ppa:george-edison55/cmake-3.x
sudo apt-get update
sudo apt-get upgrade
//sudo apt-get install cmake
cmake --version
CMake Error:
[ 24%] Building CXX object /home/xy2/tools/opencv-3.3.0/modules/videoio/src/cap_ffmpeg_impl.hpp:1557:21:
error: ‘CODEC_FLAG_GLOBAL_HEADER’ was not declared in this scope
c->flags |= CODEC_FLAG_GLOBAL_HEADER;
^
Solution:
https://stackoverflow.com/questions/46884682/error-in-building-opencv-with-ffmpeg
My solution is to grep the missing defines (2 in total) from FFmpeg by using grep -r which leads to the following code found in libavcodec/avcodec.h:
#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
#define AVFMT_RAWPICTURE 0x0020
Copy and paste it to the top of:
opencv-3.3.0/modules/videoio/src/cap_ffmpeg_impl.hpp
Compile and everything works even with the latest sources
$ ag "CODEC_FLAG_GLOBAL_HEADER" /usr/include/
/usr/include/x86_64-linux-gnu/libavcodec/avcodec.h
784:#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
999:#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
$ vim /home/xy2/tools/opencv-3.3.0/modules/videoio/src/cap_ffmpeg_impl.hpp
//added by xy
#define CODEC_FLAG_GLOBAL_HEADER (1 << 22)
- Pip install numpy
sudo pip install numpy
- Face Recognition
/home/xy2/workspace/git/opencv/face-recongnition-20180429
#!/usr/bin/python
#-*- coding: utf-8 -*-
import numpy as np
import cv2
print "============================================="
#print "get camera"
#print "============================================="
#cam = cv2.VideoCapture(0)
#print "--> get width, height"
#print "============================================="
#width = int(cam.get(cv2.CAP_PROP_FRAME_WIDTH) + 0.5)
#height = int(cam.get(cv2.CAP_PROP_FRAME_HEIGHT) + 0.5)
#print width, height
#fourcc = cv2.VideoWriter_fourcc(*'mp4v')
#out = cv2.VideoWriter('output.mp4', fourcc, 20.0, (width, height))
def Getface(img):
# create classifier
cvo = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
cvo.load('/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# face recognition
faces = cvo.detectMultiScale(
gray,
scaleFactor=1.3,
minNeighbors=5,
minSize=(30, 30),
flags=cv2.CASCADE_SCALE_IMAGE
)
# face rect
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
return img
#while(cam.isOpened()):
while(True):
frame=cv2.imread('demo.jpg')
faceframe=Getface(frame)
cv2.imshow('MyCamera', faceframe)
# quit with keyboard 'q'
if cv2.waitKey(1) & 0xFF == ord('q'):
break
print "--> release resource"
print "============================================="
#out.release()
#cam.release()
cv2.destroyAllWindows()
print "--> finished"
作者:七点水Plus
链接:https://www.jianshu.com/p/b50dc83503d3
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本文档详细介绍了如何在Ubuntu上安装Python 2.7和OpenCV 3.3.0,包括依赖安装、CMake配置、编译和安装步骤。在编译OpenCV时遇到CMAKE错误,通过查找FFmpeg头文件解决问题。最后,安装了numpy库,并展示了一个人脸识别的Python示例代码。
716

被折叠的 条评论
为什么被折叠?



