之前都是使用OpenCV/C++来做的图像处理。因为python更轻量,更方便所以硕士毕业论文使用python处理下,做的过程中记录下使用python处理特征提取遇到的一些问题,以上为背景。
开发环境
windows8.1
pycharm
anaconda2 (自带很多包)
opencv2.4.11
读取图像
可以使用opencv,也可以使用skimage,记住他们的区别:
1. 读图:opencv读图进来是BGR,而skimage是RGB。
2. 显示:opencv的接口使用BGR,而matplotlib.pyplot 则是RGB模式。
具体步骤:
先安装opencv python package
方法参考anaconda 安装opencv
具体做法是:将G:\Opencv249\opencv\build\Python\2.7\x64 目录下的cv2.pyd文件拷贝到G:\Anaconda\Lib\site-packages下,重新打开PyCharm即可
使用opencv读取图像,计算LBP特征,使用matplotlib.pyplot 显示所有的图像,
#!usr/bin/env python
#-*- coding: utf-8 -*-
from skimage.transform import rotate
from skimage.feature import local_binary_pattern
from skimage import data, io
from skimage.color import label2rgb
import skimage
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
import cv2
# settings for LBP
radius = 3
n_points = 8 * radius
# 读取图像
image = cv2.imread('1.png')
#显示到plt中,需要从BGR转化到RGB,若是cv2.imshow(win_name, image),则不需要转化
image1 = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
plt.subplot(131)
plt.imshow(image1)
# 转换为灰度图显示
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
plt.subplot(132)
plt.imshow(image, cmap='gray')
# 处理
lbp = local_binary_pattern(image, n_points, radius)
plt.subplot(133)
plt.imshow(lbp, cmap='gray')
plt.show()
LBP 特征
http://blog.csdn.net/pi9nc/article/details/18623971
http://blog.csdn.net/zouxy09/article/details/7929531
http://blog.csdn.net/dujian996099665/article/details/8886576