CV2-个人参考

这篇博客探讨了如何使用OpenCV进行图像处理,包括找出图像的最大和最小像素、阈值处理、轮廓提取、LUT渲染、直方图计算以及峰谷检测。此外,还涉及了3D图形展示和Python进程池在数据处理中的应用。
摘要由CSDN通过智能技术生成

 找出图像中最大和最小像素:

              cv2.minMaxLoc() 

# -*- coding:utf-8 -*-
import cv2

img = cv2.imread('C:\\Users\\wu\\Desktop\\111VS.png')  # 读取图片
img = cv2.resize(img, (1000, 800))  # 裁剪图片
imgContour = img.copy()  # 复制图片
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 图片二值化
minVal, maxVal, minLoc, maxLoc = cv2.minMaxLoc(img_gray)  # 获取最大最小像素及坐标

cv2.drawMarker(img, minLoc, (0, 255, 0), markerType=0)  # 绘制 0 + 十字
cv2.drawMarker(img, maxLoc, (255, 0, 255), markerType=0)
cv2.putText(img, text="min", org=minLoc, fontFace=cv2.FONT_HERSHEY_SIMPLEX, fontScale=1, color=(255, 0, 0), thickness=2)
# putText各参数依次是:图片,添加的文字,左上角坐标,字体,字体大小,颜色黑,字体粗细
cv2.putText(img, text="max", org=maxLoc, fontFace=cv2.FONT_HERSHEY_SIMPLEX, fontScale=1, color=(255, 0, 255),
            thickness=2)

print('最小值:{}, 位置:{}'.format(minVal, minLoc))
print('最大值:{}, 位置:{}'.format(maxVal, maxLoc))

cv2.imshow("Image", img)
cv2.waitKey(0)

图像阈值处理 

 cv2.threshold()

# -*- coding:utf-8 -*-
import cv2
import numpy as np

img = cv2.imread('C:\\Users\\wu\\Desktop\\test.bmp')  # 读取图片
img = cv2.resize(img, (300, 200))  # 裁剪图片
imgContour = img.copy()  # 复制图片
gray = cv2.cvtColor(imgContour, cv2.COLOR_BGR2GRAY)  # 图片二值化
# 图像阈值处理
ret, thresh1 = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
ret, thresh2 = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV)
ret, thresh3 = cv2.threshold(gray, 127, 255, cv2.THRESH_TRUNC)
ret, thresh4 = cv2.threshold(gray, 127, 255, cv2.THRESH_TOZERO)
ret, thresh5 = cv2.threshold(gray, 127, 255, cv2.THRESH_TOZERO_INV)
ret, thresh6 = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
ret, thresh7 = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
ret, thresh8 = cv2.threshold(gray, 127, 255, cv2.THRESH_TRUNC + cv2.THRESH_OTSU)
ret, thresh9 = cv2.threshold(gray, 127, 255, cv2.THRESH_TOZERO + cv2.THRESH_OTSU)
ret, thresh10 = cv2.threshold(gray, 127, 255, cv2.THRESH_TOZERO_INV + cv2.THRESH_OTSU)
ret, thresh11 = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY + cv2.THRESH_TRIANGLE)
ret, thresh12 = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_TRIANGLE)
ret, thresh13 = cv2.threshold(gray, 127, 255, cv2.THRESH_TRUNC + cv2.THRESH_TRIANGLE)
ret, thresh14 = cv2.threshold(gray, 127, 255, cv2.THRESH_TOZERO + cv2.THRESH_TRIANGLE)
ret, thresh15 = cv2.threshold(gray, 127, 255, cv2.THRESH_TOZERO_INV + cv2.THRESH_TRIANGLE)

imgHor1 = np.hstack((thresh1, thresh2, thresh3, thresh4))
imgHor2 = np.hstack((thresh5, thresh6, thresh7, thresh8))
imgHor3 = np.hstack((thresh9, thresh10, thresh11, thresh12))
imgHor4 = np.hstack((thresh13, thresh14, thresh15, gray))
Image = np.vstack((imgHor1, imgHor2,imgHor3,imgHor4))
cv2.imshow("Image", Image)
cv2.waitKey(0)

 

轮廓提取

cv2.findContours()

# -*- coding:utf-8 -*-
import cv2
import numpy as np
img = cv2.imread('C:\\Users\\wu\\Desktop\\111VS.png')  # 读取图片
img = cv2.resize(img, (1000, 800))  # 裁剪图片
img1 = img.copy()
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 图片二值化

(_, im_bw) = cv2.threshold(img_gray, 100, 255,
                           cv2.THRESH_BINARY | cv2.THRESH_OTSU)  # 阈值处理  凸包cv2.THRESH_OTSU  cv2.THRESH_TRIANGLE
(cnts, _) = cv2.findContours(im_bw.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)  # 提取轮廓

cnt = max(cnts, key=cv2.contourArea)  # 提取最大轮廓
cv2.drawContours(img, cnt, -1, (128, 0, 128), 2)  # 绘制轮廓 -1 全部绘制 颜色 线条粗细

hull = cv2.convexHull(cnt, returnPoints=True)  # 凸包
cv2.polylines(img, [hull], True, (128, 0, 128), 2)  # 绘制凸包

(_, im_bw) = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值