import cv2 as cv
import numpy as np
def line_detection(image):
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
edges = cv.Canny(gray, 50, 150, apertureSize=3)
lines = cv.HoughLines(edges, 1, np.pi/180, 200)#半径步长为1,每次偏转1度,直线最小长度200
for line in lines:
#print(type(lines))
rho, theta = line[0]
a = np.cos(theta)
b = np.sin(theta)
x0 = a * rho
y0 = b * rho
x1 = int(x0+1000*(-b))
y1 = int(y0+1000*(a))
x2 = int(x0-1000*(-b))
y2 = int(y0-1000*(a))
cv.line(image, (x1, y1), (x2, y2), (0, 255, 0), 2)
cv.imshow("line_detection", image)
def line_detect_possible_demo(image):
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
edges = cv.Canny(gray, 50, 150, apertureSize=3)
lines = cv.HoughLinesP(edges, 1, np.pi/180, 100, minLineLength=100, maxLineGap=15)
for line in lines:
#print(type(line))
x1, y1, x2, y2 = line[0]
cv.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2)
cv.imshow("line_detect_possible_demo", image)
print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("D:/vcprojects/images/fangge.png")
src1=src.copy()
src2=src.copy()
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
line_detection(src1)
line_detect_possible_demo(src2)
cv.waitKey(0)
cv.destroyAllWindows()
import cv2 as cv
import numpy as np
def detect_circles_demo(image):
dst = cv.pyrMeanShiftFiltering(image, 10, 100)
cimage = cv.cvtColor(dst, cv.COLOR_BGR2GRAY)
circles = cv.HoughCircles(cimage, cv.HOUGH_GRADIENT, 1, 20, param1=50, param2=30, minRadius=0, maxRadius=0)
#步长为1,最小圆心距20
circles = np.uint16(np.around(circles))
for i in circles[0, :]:
cv.circle(image, (i[0], i[1]), i[2], (0, 0, 255), 2)#圆圈
cv.circle(image, (i[0], i[1]), 2, (255, 0, 0), 2)#圆心
cv.imshow("circles", image)
print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("D:/vcprojects/images/coins_001.jpg")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
detect_circles_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()
import cv2 as cv
import numpy as np
def edge_demo(image):
blurred = cv.GaussianBlur(image, (3, 3), 0)
gray = cv.cvtColor(blurred, cv.COLOR_BGR2GRAY)
edge_output = cv.Canny(gray, 30, 100)
cv.imshow("Canny Edge", edge_output)
return edge_output
def edge_contours_demo(image):
binary = edge_demo(image)
cv.imshow("canny binary", binary)
cloneImage, contours, heriachy = cv.findContours(binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
for i, contour in enumerate(contours):
cv.drawContours(image, contours, i, (0, 0, 255), 2)#最后一个参数为-1时表示填充
approxCurve = cv.approxPolyDP(contour, 4, True)
if approxCurve.shape[0] > 6:
cv.drawContours(image, contours, i, (255, 0, 0), 2)
if approxCurve.shape[0] == 4:
cv.drawContours(image, contours, i, (0, 255, 0), 2)
#print(approxCurve.shape[0])
#print(i)
cv.imshow("edge detect contours", image)
def contours_demo(image):
dst = cv.GaussianBlur(image, (3, 3), 0)
gray = cv.cvtColor(dst, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
cv.imshow("binary image", binary)
# binary = edge_demo(image)
cloneImage, contours, heriachy = cv.findContours(binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
for i, contour in enumerate(contours):
cv.drawContours(image, contours, i, (0, 0, 255), 2)#最后一个参数为-1时表示填充
approxCurve = cv.approxPolyDP(contour, 4, True)
if approxCurve.shape[0] > 6:
cv.drawContours(image, contours, i, (255, 0, 0), 2)
if approxCurve.shape[0] == 4:
cv.drawContours(image, contours, i, (0, 255, 0), 2)
#print(approxCurve.shape[0])
#print(i)
cv.imshow("detect contours", image)
print("--------- Python OpenCV Tutorial ---------")
#src = cv.imread("D:/vcprojects/images/coins_001.jpg")
src = cv.imread("D:/vcprojects/images/blob1.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
src1=src.copy()
src2=src.copy()
contours_demo(src1)
edge_contours_demo(src2)
cv.waitKey(0)
cv.destroyAllWindows()
import cv2 as cv
import numpy as np
def measure_object(image):
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
print("threshold value : %s"%ret)
cv.imshow("binary image", binary)
dst = cv.cvtColor(binary, cv.COLOR_GRAY2BGR)
outImage, contours, hireachy = cv.findContours(binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
print("--------------------------------")
for i, contour in enumerate(contours):
area = cv.contourArea(contour)#轮廓面积
x, y, w, h = cv.boundingRect(contour)#外接矩形
rate = min(w, h)/max(w, h)#宽高比
print("rectangle rate : %s"%rate)
mm = cv.moments(contour)#计算图像中的中心矩
#print(type(mm))
#重心坐标xc,yc
cx = mm['m10']/mm['m00']
cy = mm['m01']/mm['m00']
cv.circle(dst, (np.int(cx), np.int(cy)), 3, (0, 255, 255), -1)
cv.rectangle(dst, (x, y), (x+w, y+h), (0, 0, 255), 2)
print("contour area :%s"%area)
print("--------------------------------")
cv.drawContours(image, contours, i, (0, 255, 0), 2)
cv.imshow("measure-contours", image)
def measure_object1(image):
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
print("threshold value : %s"%ret)
cv.imshow("binary image1", binary)
dst = cv.cvtColor(binary, cv.COLOR_GRAY2BGR)
outImage, contours, hireachy = cv.findContours(binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
print("--------------------------------")
for i, contour in enumerate(contours):
area = cv.contourArea(contour)#轮廓面积
x, y, w, h = cv.boundingRect(contour)#外接矩形
rate = min(w, h)/max(w, h)#宽高比
print("rectangle rate : %s"%rate)
mm = cv.moments(contour)#计算图像中的中心矩
#print(type(mm))
#重心坐标xc,yc
cx = mm['m10']/mm['m00']
cy = mm['m01']/mm['m00']
cv.circle(dst, (np.int(cx), np.int(cy)), 3, (0, 255, 255), -1)
cv.rectangle(dst, (x, y), (x+w, y+h), (0, 0, 255), 2)
print("contour area :%s"%area)
print("--------------------------------")
approxCurve = cv.approxPolyDP(contour, 4, True)
#print(approxCurve.shape)
if approxCurve.shape[0] > 6:#圆
cv.drawContours(image, contours, i, (0, 255, 0), 2)
if approxCurve.shape[0] == 4:
cv.drawContours(image, contours, i, (0, 0, 255), 2)
if approxCurve.shape[0] == 3:#三角形
cv.drawContours(image, contours, i, (255, 0, 0), 2)
cv.imshow("measure-contours1", image)
print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("D:/vcprojects/images/digitss.png")
src1 = cv.imread("D:/vcprojects/images/blob1.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
cv.imshow("input image1", src1)
src2=src.copy()
src3=src1.copy()
measure_object(src2)
measure_object1(src3)
cv.waitKey(0)
cv.destroyAllWindows()
--------- Python OpenCV Tutorial ---------
threshold value : 90.0
--------------------------------
rectangle rate : 0.9764705882352941
contour area :5344.0
--------------------------------
rectangle rate : 0.7325581395348837
contour area :1326.5
--------------------------------
rectangle rate : 0.8571428571428571
contour area :1819.0
--------------------------------
rectangle rate : 0.2441860465116279
contour area :646.0
--------------------------------
rectangle rate : 0.7294117647058823
contour area :1314.5
--------------------------------
rectangle rate : 0.5476190476190477
contour area :2696.0
--------------------------------
rectangle rate : 0.49
contour area :2282.5
--------------------------------
rectangle rate : 0.5824175824175825
contour area :1402.0
--------------------------------
threshold value : 54.0
--------------------------------
rectangle rate : 0.2129032258064516
contour area :4928.0
--------------------------------
rectangle rate : 0.15163934426229508
contour area :8746.0
--------------------------------
rectangle rate : 0.6825396825396826
contour area :12471.5
--------------------------------
rectangle rate : 0.972972972972973
contour area :977.0
--------------------------------
rectangle rate : 1.0
contour area :1425.5
--------------------------------
rectangle rate : 0.975609756097561
contour area :1227.0
--------------------------------
rectangle rate : 0.975609756097561
contour area :11372.0
--------------------------------
rectangle rate : 0.9111111111111111
contour area :7202.5
--------------------------------
rectangle rate : 0.21962616822429906
contour area :9797.0
--------------------------------
rectangle rate : 0.17972350230414746
contour area :6580.5
--------------------------------
import cv2 as cv
import numpy as np
def erode_demo(image):#腐蚀
#print(image.shape)
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
cv.imshow("binary", binary)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))#结构元素为矩形
dst = cv.erode(binary, kernel)#腐蚀
cv.imshow("erode_demo", dst)
def dilate_demo(image):#膨胀
#print(image.shape)
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
cv.imshow("binary", binary)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))
dst = cv.dilate(binary, kernel)
cv.imshow("dilate_demo", dst)
print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("D:/vcprojects/images/5.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
src1=src.copy()
src2=src.copy()
erode_demo(src1)
dilate_demo(src2)
cv.waitKey(0)
cv.destroyAllWindows()
import cv2 as cv
import numpy as np
def erode_demo(image):#腐蚀
#print(image.shape)
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
cv.imshow("binary", binary)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))#结构元素为矩形
dst = cv.erode(binary, kernel)#腐蚀
cv.imshow("erode_demo", dst)
def dilate_demo(image):#膨胀
#print(image.shape)
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
cv.imshow("binary", binary)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))
dst = cv.dilate(binary, kernel)
cv.imshow("dilate_demo", dst)
print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("D:/vcprojects/images/bin2.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
src1=src.copy()
src2=src.copy()
erode_demo(src1)
dilate_demo(src2)
# kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))
# dst = cv.erode(src, kernel)
# cv.imshow("result", dst)
cv.waitKey(0)
cv.destroyAllWindows()
import cv2 as cv
import numpy as np
def open_demo(image):#开操作=腐蚀+膨胀 去外边白点
print(image.shape)
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
cv.imshow("binary", binary)
kernel = cv.getStructuringElement(cv.MORPH_ELLIPSE, (15, 15))
binary = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel)
cv.imshow("open-result", binary)
def close_demo(image):#闭操作=膨胀+腐蚀 填充里边黑点
print(image.shape)
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
cv.imshow("binary", binary)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 15))
binary = cv.morphologyEx(binary, cv.MORPH_CLOSE, kernel)
cv.imshow("close_demo", binary)
print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("D:/vcprojects/images/bin2.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
open_demo(src)
close_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()
import cv2 as cv
import numpy as np
def open_shuiping_demo(image):#开操作=腐蚀+膨胀 去外边白点 填充里边黑点,提取水平或垂直线
print(image.shape)
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
cv.imshow("binary", binary)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 1))#提取水平线
binary = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel)
cv.imshow("open_shuiping_demo", binary)
def open_shuzhi_demo(image):#开操作=腐蚀+膨胀 去外边白点 填充里边黑点,提取水平或垂直线
print(image.shape)
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
cv.imshow("binary", binary)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (1, 15))#提取垂直线
binary = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel)
cv.imshow("open_shuzhi_demo", binary)
print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("D:/vcprojects/images/morph01.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
open_shuiping_demo(src)
open_shuzhi_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()
import cv2 as cv
import numpy as np
def open_demo(image):#开操作=腐蚀+膨胀 去外边白点 填充里边黑点,提取水平或垂直线
print(image.shape)
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
cv.imshow("binary", binary)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (4,4))
binary = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel)
cv.imshow("open__demo", binary)
print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("D:/vcprojects/images/abcd.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
open_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()
import cv2 as cv
import numpy as np
def open_demo(image):#开操作=腐蚀+膨胀 去外边白点 填充里边黑点,提取水平或垂直线
print(image.shape)
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
cv.imshow("binary", binary)
kernel = cv.getStructuringElement(cv.MORPH_ELLIPSE, (5, 5))
binary = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel)
cv.imshow("open__demo", binary)
print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("D:/vcprojects/images/zhifang_ball.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
open_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()
import cv2 as cv
import numpy as np
def tophat_demo(image):#顶帽=原图-开操作(腐蚀+膨胀)
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 15))
dst = cv.morphologyEx(gray, cv.MORPH_TOPHAT, kernel)
#增加亮度
cimage = np.array(gray.shape, np.uint8)
cimage = 100
dst = cv.add(dst, cimage)
cv.imshow("tophat", dst)
def blackhat_demo(image):#黑帽=闭操作(膨胀+腐蚀)-原图
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 15))
dst = cv.morphologyEx(gray, cv.MORPH_BLACKHAT, kernel)
#增加亮度
cimage = np.array(gray.shape, np.uint8)
cimage = 100
dst = cv.add(dst, cimage)
cv.imshow("blackhat", dst)
def tophat_binary_demo(image):
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 15))
dst = cv.morphologyEx(binary, cv.MORPH_TOPHAT, kernel)
cv.imshow("tophat binary", dst)
def blackhat_binary_demo(image):
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 15))
dst = cv.morphologyEx(binary, cv.MORPH_BLACKHAT, kernel)
cv.imshow("blackhat binary", dst)
def base_gradient_demo(image):#基本梯度=膨胀-腐蚀
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))
dst = cv.morphologyEx(binary, cv.MORPH_GRADIENT, kernel)
cv.imshow("base gradient", dst)
def gradient2_demo(image):
kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))
pengzhang = cv.dilate(image, kernel)
fushi = cv.erode(image, kernel)
dst1 = cv.subtract(image, fushi) # 内部梯度=原图-腐蚀
dst2 = cv.subtract(pengzhang, image) # 外部梯度=膨胀-原图
cv.imshow("internal gradient", dst1)
cv.imshow("external gradient", dst2)
print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("D:/vcprojects/images/bin2.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
tophat_demo(src)
blackhat_demo(src)
tophat_binary_demo(src)
blackhat_binary_demo(src)
base_gradient_demo(src)
gradient2_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()
import cv2 as cv
import numpy as np
def watershed_demo():
# remove noise if any 去噪
#print(src.shape)
blurred = cv.pyrMeanShiftFiltering(src, 10, 100)
# gray\binary image 灰度、二值化
gray = cv.cvtColor(blurred, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
cv.imshow("binary-image", binary)
# morphology operation 形态学操作
kernel = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))
mb = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel, iterations=2)#2次开操作
sure_bg = cv.dilate(mb, kernel, iterations=3)#3次膨胀
cv.imshow("mor-opt", sure_bg)
# distance transform 距离变换
dist = cv.distanceTransform(mb, cv.DIST_L2, 3)
dist_output = cv.normalize(dist, 0, 1.0, cv.NORM_MINMAX)
cv.imshow("distance-t", dist_output*50)
ret, surface = cv.threshold(dist, dist.max()*0.6, 255, cv.THRESH_BINARY)
surface_fg = np.uint8(surface)
cv.imshow("surface-bin", surface_fg)
unknown = cv.subtract(sure_bg, surface_fg)#未知区域,种子以外的区域
ret, markers = cv.connectedComponents(surface_fg)
# watershed transform 分水岭变换
markers = markers + 1
markers[unknown==255] = 0
markers = cv.watershed(src, markers=markers)
src[markers==-1] = [0, 0, 255]
cv.imshow("result", src)
print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("D:/vcprojects/images/coins_001.jpg")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
watershed_demo()
cv.waitKey(0)
cv.destroyAllWindows()
import cv2 as cv
import numpy as np
def face_detect_demo(image):
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
face_detector = cv.CascadeClassifier("D:/opencv342/data/haarcascades/haarcascade_frontalface_alt_tree.xml")
#face_detector = cv.CascadeClassifier("D:/opencv342/data/lbpcascades/lbpcascade_frontalcatface.xml")
#下载地址:https://github.com/opencv/opencv
faces = face_detector.detectMultiScale(gray, 1.02, 4)
for x, y, w, h in faces:
cv.rectangle(image, (x, y), (x+w, y+h), (0, 0, 255), 2)
cv.imshow("result", image)
print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("D:/vcprojects/images/test.png")
cv.namedWindow("input", cv.WINDOW_AUTOSIZE)
cv.namedWindow("result", cv.WINDOW_AUTOSIZE)
cv.imshow("input", src)
face_detect_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()
import cv2 as cv
import numpy as np
def face_detect_demo(image):
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
face_detector = cv.CascadeClassifier("D:/opencv342/data/haarcascades/haarcascade_frontalface_alt_tree.xml")
#face_detector = cv.CascadeClassifier("D:/opencv342/data/lbpcascades/lbpcascade_frontalcatface.xml")
#下载地址:https://github.com/opencv/opencv
faces = face_detector.detectMultiScale(gray, 1.1, 2)
for x, y, w, h in faces:
cv.rectangle(image, (x, y), (x+w, y+h), (0, 0, 255), 2)
cv.imshow("result", image)
print("--------- Python OpenCV Tutorial ---------")
cv.namedWindow("result", cv.WINDOW_AUTOSIZE)
capture = cv.VideoCapture(0)
while(True):
ret, frame = capture.read()
frame = cv.flip(frame, 1)#左右变换
face_detect_demo(frame)
c = cv.waitKey(10)
if c == 27: # ESC
break
cv.waitKey(0)
cv.destroyAllWindows()
import cv2 as cv
import numpy as np
from PIL import Image
import pytesseract as tess
#pip install opencv-python
#pip intsall opencv-contrib-python
#pip install pytesseract
# https://blog.csdn.net/duanshao/article/details/79514051
# https://blog.csdn.net/wang_hugh/article/details/80760940
def recognize_text():
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
ret, open_out = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
cv.imshow("binary-image", open_out)
cv.bitwise_not(open_out, open_out)
textImage = Image.fromarray(open_out)
text = tess.image_to_string(textImage)
print("识别结果: %s"%text)
print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("D:/vcprojects/images/74162.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
recognize_text()
cv.waitKey(0)
cv.destroyAllWindows()
--------- Python OpenCV Tutorial ---------
识别结果: 74162
import cv2 as cv
import numpy as np
from PIL import Image
import pytesseract as tess
#pip install opencv-python
#pip intsall opencv-contrib-python
#pip install pytesseract
# https://blog.csdn.net/duanshao/article/details/79514051
# https://blog.csdn.net/wang_hugh/article/details/80760940
def recognize_text():
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
ret, open_out = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
cv.imshow("binary-image", open_out)
cv.bitwise_not(open_out, open_out)
textImage = Image.fromarray(open_out)
text = tess.image_to_string(textImage)
print("识别结果: %s"%text)
print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("D:/vcprojects/images/yzm1.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
recognize_text()
cv.waitKey(0)
cv.destroyAllWindows()
--------- Python OpenCV Tutorial ---------
识别结果: KD Q U
import cv2 as cv
import numpy as np
from PIL import Image
import pytesseract as tess
#pip install opencv-python
#pip intsall opencv-contrib-python
#pip install pytesseract
# https://blog.csdn.net/duanshao/article/details/79514051
# https://blog.csdn.net/wang_hugh/article/details/80760940
def recognize_text():
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
#cv.imshow("bin", binary)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (1,2))
bin1 = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel)
#cv.imshow("bin1", bin1)
kernel1 = cv.getStructuringElement(cv.MORPH_RECT, (2,1))
open_out = cv.morphologyEx(bin1, cv.MORPH_OPEN, kernel1)
cv.imshow("binary", open_out)
cv.bitwise_not(open_out, open_out)
textImage = Image.fromarray(open_out)
text = tess.image_to_string(textImage)
print("识别结果: %s"%text)
print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("D:/vcprojects/images/8a62n1.png")
#src = cv.imread("D:/vcprojects/images/e3fy.jpg")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
recognize_text()
cv.waitKey(0)
cv.destroyAllWindows()