图像处理DOG 算法,python结合cv2实现
来源:互联网 发布:欧卡2a卡优化 编辑:程序博客网 时间:2024/06/03 07:09
DoG (Difference of Gaussian)是灰度图像增强和角点检测的方法
#coding=utf-8import cv2import numpy as npdef getExtrema(A, B, C, thresh): height,width= A.shape resu = np.ones((height, width), A.dtype) * 100 for row in range(1, height-1): for col in range(1, width-1): center = B[row, col] if center < thresh: continue B[row, col] = B[row, col - 1] minValue = np.vstack([A[row-1:row+2, col-1:col+2], B[row-1:row+2, col-1:col+2],C[row-1:row+2, col-1:col+2]]).min() maxValue = np.vstack([A[row - 1:row + 2, col - 1:col + 2], B[row - 1:row + 2, col - 1:col + 2], C[row - 1:row + 2, col - 1:col + 2]]).max() if center < minValue: resu[row, col] = 0 if center > maxValue: resu[row, col] = 255 B[row, col] = center return resudef addPoint(image, image_point): height, width, dvim = image.shape for row in range(0, height): for col in range(0, width): if image_point[row, col] == 255: cv2.circle(image, (row, col), 5, thickness=1, color=[0,0,255]) elif image_point[row, col] == 0: cv2.circle(image, (row, col), 5, thickness=1, color=[0,255,0])if __name__ == "__main__": image = cv2.imread('lena.jpg') r,g,b = cv2.split(image) image_gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) image_gray_blur1 = cv2.GaussianBlur(image_gray, (3, 3), 0.3) image_gray_blur2 = cv2.GaussianBlur(image_gray, (3, 3), 0.4) image_gray_blur3 = cv2.GaussianBlur(image_gray, (3, 3), 0.5) image_gray_blur4 = cv2.GaussianBlur(image_gray, (3, 3), 0.6) image_gray_blur5 = cv2.GaussianBlur(image_gray, (3, 3), 0.7) image_gray_blur6 = cv2.GaussianBlur(image_gray, (3, 3), 0.8) image_gray_dog1 = image_gray_blur2 - image_gray_blur1 image_gray_dog2 = image_gray_blur4 - image_gray_blur3 image_gray_dog3 = image_gray_blur6 - image_gray_blur5 image_point = getExtrema(image_gray_dog1, image_gray_dog2, image_gray_dog3, 2) #反过来的gbr cv2.namedWindow("image_DOG", flags= cv2.WINDOW_NORMAL) cv2.moveWindow("image_DOG", 300, 200) addPoint(image, image_point) cv2.imshow("image", cv2.imread("./lena.jpg")) cv2.imshow("image_gray", image_gray) cv2.imshow("image_gray_blur1", image_gray_blur1) cv2.imshow("image_gray_blur2", image_gray_blur2) cv2.imshow("image_gray_blur3", image_gray_blur3) cv2.imshow("image_gray_blur4", image_gray_blur4) cv2.imshow("image_gray_blur5", image_gray_blur5) cv2.imshow("image_gray_blur6", image_gray_blur6) cv2.imshow("image_gray_dog1", image_gray_dog1) cv2.imshow("image_gray_dog2", image_gray_dog2) cv2.imshow("image_gray_dog3", image_gray_dog3) cv2.imshow("image_DOG", image) cv2.imwrite("image_gray.jpg", image_gray,[int(cv2.IMWRITE_JPEG_QUALITY), 100]) cv2.imwrite("image_gray_blur1.jpg", image_gray_blur1,[int(cv2.IMWRITE_JPEG_QUALITY), 100]) cv2.imwrite("image_gray_blur2.jpg", image_gray_blur2,[int(cv2.IMWRITE_JPEG_QUALITY), 100]) cv2.imwrite("image_gray_blur3.jpg", image_gray_blur3,[int(cv2.IMWRITE_JPEG_QUALITY), 100]) cv2.imwrite("image_gray_blur4.jpg", image_gray_blur4,[int(cv2.IMWRITE_JPEG_QUALITY), 100]) cv2.imwrite("image_gray_blur5.jpg", image_gray_blur5,[int(cv2.IMWRITE_JPEG_QUALITY), 100]) cv2.imwrite("image_gray_blur6.jpg", image_gray_blur6,[int(cv2.IMWRITE_JPEG_QUALITY), 100]) cv2.imwrite("image_gray_dog1.jpg", image_gray_dog1,[int(cv2.IMWRITE_JPEG_QUALITY), 100]) cv2.imwrite("image_gray_dog2.jpg", image_gray_dog2,[int(cv2.IMWRITE_JPEG_QUALITY), 100]) cv2.imwrite("image_gray_dog3.jpg", image_gray_dog3,[int(cv2.IMWRITE_JPEG_QUALITY), 100]) cv2.imwrite("image_DOG.jpg", image,[int(cv2.IMWRITE_JPEG_QUALITY), 100] ) cv2.waitKey(0) cv2.destroyAllWindows()
ean.jpg
image_gray.jpg
image_gray_blur1.jpg
image_gray_blur2.jpg
image_gray_blur3.jpg
image_gray_blur4.jpg
image_gray_blur5.jpg
image_gray_blur6.jpg
image_gray_dog1.jpg
image_gray_dog2.jpg
image_gray_dog3.jpg
image_DOG.jpg
0 0
- 图像处理DOG 算法,python结合cv2实现
- Python cv2 图像自适应灰度直方图均衡化处理
- Python-OpenCV 处理图像(一):基本操作 cv2
- 【python 图像处理】各种卷积滤波器的效果--cv2
- cv2 python 图片的批量处理
- Python图像处理实现画板
- otsu结合OpenCV实现灰度图像自动阈值处理
- python cv2.imread()、cv2.imshow()、cv2.imwrite()
- python-opencv(cv2) 之一 图像的简单读取
- caffe训练模型:(二)python+cv2 图像色彩变换
- python之cv2与图像的载入、显示和保存
- 图像数据增强,最好是用cv2去实现目的
- matlab实现分水岭算法处理图像分割
- 图像处理基本算法(汇总)以及实现
- 【图像算法】SIFT中LoG和DoG比较
- cv2读取图像
- 图像二值化 cv2.threshold
- Mac平台下python引用cv2错误处理
- UILabel自动换行+自适应高度
- SharedPreference.Editor的apply和commit方法异同
- c++实现插入排序
- android 蓝牙连接库(蓝牙设备选择器)
- mysql修改charactet_set_server编码为utf8
- 图像处理DOG 算法,python结合cv2实现
- MYSQL 定时执行存储过程
- 利用pull解析xml文件
- Android自动化测试之Robotium学习(四)
- 第十四周项目2.2—两个成员的类模板
- java中日期格式的加减,Timestamp和util.Date格式互转
- Powerdesigner逆向工程
- 地址栏中输入IP地址提示指定的网络名不再可用的解决方法
- C# SendMessage用法