11 2023 档案
摘要:Code: 1 import cv2 2 import numpy as np 3 4 img = np.zeros((200, 200), dtype=np.uint8) 5 img[50:150, 50:150] = 255 6 7 # ret, thresh = cv2.threshold(i
阅读全文
摘要:对于使用OpenCV已有的算子,我们还可以自定义卷积核以达到不同的效果。 filters.py 1 import cv2 2 import numpy 3 4 """ 定义滤波器和类 """ 5 6 7 def strokeEdges(src, dst, blurKsize=7, edgeKsize
阅读全文
摘要:Cameo项目介绍: 1、实时捕获并显示摄像头帧。 2、具备截图、保存视频和退出三个功能键。 要求存在文件:manager.py 和 cameo.py 一、manager.py 两个类:CaptureManager、WindowManager CaptureManager负责摄像头帧的捕获,编解码得
阅读全文
摘要:一、读取写入视频文件 1 import cv2 2 3 # 创建一个视屏捕获对象 4 videoCapture = cv2.VideoCapture('AVI.avi') 5 6 # 获取视频的属性值,cv2.CAP_PROP_FPS获取视频帧率 7 fps = videoCapture.get(c
阅读全文
摘要:接上一随笔,这次学习针对图像数据的访问(Numpy.array) 在OpenCV中,使用 imread() 方法可以访问图像,其返回值是一个数组,而根据传入的不同图像,将会返回不同维度的数组。 针对返回的图像数据,即数组,我们是可以进行操作的: 1 import cv2 2 3 # MyPic.pn
阅读全文
摘要:学习完基础的图像算法,开始接触OpenCV学习: 灰度图中,一个像素点上的灰度级需要一个字节(byte,2^8,8 bit)进行存储,此时的灰度图是二维的。而当我们需要转换为彩色图时,即三维,便会产生颜色通道(Channel),这个时候,一个像素点上的灰度级便会需要三个字节来进行存储。 可以借助笛卡
阅读全文
摘要:Robert 算子: Prewitt 算子: Sobel 算子: Laplace 算子: Canny 算子:
阅读全文
摘要:1 void erosion(BYTE* image, int w, int h, BYTE* outImg) 2 { 3 int rept; 4 //腐蚀 5 memcpy(outImg, image, sizeof(BYTE) * w * h); //将读取的图像赋值给outImg,方便进行腐蚀
阅读全文
摘要:1 void meanFilter(BYTE* image, int width, int height, BYTE* outImg) 2 { 3 //均值滤波 4 int smth[9]; 5 int i, j, m, n; 6 BYTE block[9]; 7 8 // 高斯卷积核初始化 9 s
阅读全文
摘要:1 void hisEqualiz(BYTE* image, int w, int h, BYTE* outImg) 2 { 3 //直方图均衡 4 int his[256];// 声明一个长度为256的数组,用于存储每个灰度级出现的频率 5 int n, i, j; 6 7 // 初始化直方图数组
阅读全文
摘要:前情提要:本记录需要一定的C++和图像处理基础进行阅读。 图像处理算法学习记录: Code: 1 void histCompute(BYTE*image, int width, int height) 2 { 3 //计算直方图 4 for (int n = 0; n < 256; n++) { 5
阅读全文
摘要:学习模板(泛型)的时候针对定义为引用类型有些费解 1 class BigType { 2 // 假设这里有大量的数据和复杂的操作 3 }; 4 5 template <typename T> 6 inline const T& Max(const T& a, const T& b) { 7 retu
阅读全文
摘要:1 #include <iostream> 2 using namespace std; 3 4 void func(void); 5 6 static int count = 10; 7 8 int main() { 9 while (count--) { 10 func(); 11 } 12 1
阅读全文