Opencv——Python 首先说一下Opencv是什么: Opencv是一个用图像处理、分析、机器视觉方面的开源数据库,是免费的。
我现在是刚开始学习opencv,而我现在所学习的语言是python语言,在遇到许多问题的时候百度,发现很多案例基本都是用c++写的,而我自己所学的c++没有学很好,所以造成许多需要慢慢探索、慢慢解决的问题。现在我把自己遇到的问题列出来供以后参考。
1.python的程序识别不了中文: 通常python程序开头都会写注释 #- -coding:utf-8 -- ,但是你可能运行的时候会发现识别不了中文,输出的中文会变成乱码,这是要将这个注释改成 #- -coding:cp936 -- 这样就行了,而用opencv调取图片时,如果图片文件名是中文,也有可能识别不了,改成这样同样可以解决问题。 2.图片调取 代码:
1 2 3 4 5 6 7 8 9 #-*-coding:cp936 -*- import cv2 img=cv2.imread("F:\\易烊千玺 .jpg") cv2.namedWindow("Image") cv2.imshow("Image",img) cv2.waitKey(0) cv2.destroyAllWindows()
运行结果: 2.灰度化处理图片。 代码:
1 2 gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) cv2.imshow("gray_image",gray)
承接上一个代码,这样处理图片就会变为灰度图像 3.对图像进行灰度变换。 先把像素变成一个二维数组,再用函数进行处理 代码:
1 2 3 4 5 6 7 8 #对灰度图像进行y=-x+255 g=copy.deepcopy(gray) rows=img.shape[0] cols=img.shape[1] for i in range(rows): for j in range(cols): g[i][j]=255-g[i][j] cv2.imshow("g_image",g)
4.三色道直方图。 代码:
1 2 3 4 5 6 7 8 color=('b','g','r') def image_hist(image): for i,col in enumerate(color): hist=cv2.calcHist([image],[i],None,[256],[0,256]) plt.plot(hist,color=col) plt.title("RGB") plt.xlim([0,256]) plt.show()
运行结果: 这就是三色道直方图。 5.灰度直方图。 代码:
1 2 plt.hist(gray.ravel(),255,[0,256]) plt.show()
6.opencv中的createTrackbar函数。 代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #-*-coding:utf-8 -*- #使用opencv中的creatTrackbar函数来调节一些参数观察图像变化 import cv2 import numpy as np # 添加新窗口 #读入原始图像 cv2.namedWindow('image') filename = 'F:\\jackson8.jpg' img=cv2.imread(filename) def turn(c): num=cv2.getTrackbarPos("num","image") ret,thresh= cv2.threshold(img,num,255,cv2.THRESH_BINARY) cv2.imshow('image',thresh) cv2.createTrackbar('num','image', 0,255,turn) # 创建滑块 turn(0) cv2.waitKey(0) cv2.destroyAllWindows()