1.点击图像显示坐标、rgb、hsv
import cv2
# 读 取 图 片
img = cv2.imread('74.jpg') # 直接读为灰度图像
# 缩小图像10倍(因为我的图片太大,所以要缩小10倍方便显示)
height, width = img.shape[:2]
size = (256, 256) # bgr
img = cv2.resize(img, size, interpolation=cv2.INTER_AREA)
#BGR转化为HSV
HSV=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
#鼠标点击响应事件
def getposHsv(event,x,y,flags,param):
if event==cv2.EVENT_LBUTTONDOWN:
print("HSV is",HSV[y,x])
def getposBgr(event,x,y,flags,param):
if event==cv2.EVENT_LBUTTONDOWN:
print(x,y)
print("Bgr is",img[y,x])
#
# cv2.imshow("imageHSV",HSV)
cv2.imshow('image',img)
cv2.setMouseCallback("imageHSV",getposHsv)
cv2.setMouseCallback("image",getposBgr)
cv2.waitKey(0)
2.转灰度图
import cv2
img=cv2.imread("img/2/74.jpg")
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow("gg",gray)
cv2.imwrite("img/2/75.jpg",gray)
cv2.waitKey(0)
3.灰度转rgb
import cv2
import numpy as np
img = cv2.imread('img/2/74.jpg', 1)
img2 = cv2.imread('img/2/75.jpg', 1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
for i in range(height):
for j in range(width):
b = float(img[i, j][0])
g = float(img[i, j][1])
r = float(img[i, j][2])
b1 = (b / (b + g + r))
g1 = (g / (b + g + r))
r1 = (r / (b + g + r))
# 鏂规硶1
img2[i, j][0] = int(b1 * img2[i, j][0]*3)
img2[i, j][1] = int(g1 * img2[i, j][0]*3)
img2[i, j][2] = int(r1 * img2[i, j][0]*3)
cv2.imwrite("img/2/76.jpg",img2)
# cv2.imshow('image1', img2)
# cv2.waitKey(0)
4.膨胀、腐蚀
import cv2 as cv
import numpy as np
import cv2
def erode(img):
gray = cv.cvtColor(img, cv.COLOR_RGB2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
# 获得结构元素
# 第一个参数:结构元素形状,这里是矩形
# 第二个参数:结构元素大小
kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))
# 执行腐蚀
dst = cv.erode(binary, kernel)
cv.imshow("erode", dst)
cv2.imwrite("img2/aa11.jpg", dst)
def dilate(img):
gray = cv.cvtColor(img, cv.COLOR_RGB2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
# 获得结构元素
# 第一个参数:结构元素形状,这里是矩形
# 第二个参数:结构元素大小
kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))
# 执行膨胀
dst = cv.dilate(binary, kernel)
cv.imshow("dilate", dst)
cv2.imwrite("img2/aa22.jpg", dst)
src = cv.imread('img/a.jpg')
erode(src)
dilate(src)
# cv.waitKey(0)
# cv.destroyAllWindows()
5.边缘检测
#!/usr/bin/env python
# encoding: utf-8
import cv2
import numpy as np
img = cv2.imread("img/19.jpg", 0) #Canny只能处理灰度图,所以将读取的图像转成灰度图
img = cv2.GaussianBlur(img,(3,3),0) #高斯平滑处理原图像降噪
canny = cv2.Canny(img, 50, 150) #apertureSize默认为3
cv2.namedWindow("Canny",0);
cv2.resizeWindow("Canny", 640, 480);
cv2.imshow('Canny', canny)
cv2.waitKey(0)
cv2.destroyAllWindows()