视觉图像处理
文章平均质量分 69
We唯有自己强大
一个人应该竭尽所能,然后才听天由命。
展开
-
C# 多线程Invoke,begininvoke的用法详解
一直对invoke和begininvoke的使用和概念比较混乱,这两天看了些资料,对这两个的用法和原理有了些新的认识和理解。首先说下,invoke和begininvoke的使用有两种情况:control中的invoke、begininvoke。delegrate中的invoke、begininvoke。这两种情况是不同的,我们这里要讲的是第1种。下面我们在来说下.NET中对invoke和begininvoke的官方定义。control.invoke(参数delegate)方法:在拥有此控件的基础窗口句柄的线原创 2022-07-08 15:38:37 · 1551 阅读 · 0 评论 -
Halcon教程第一讲 读取多张图片
第一种方法ImagePath:=[]ImagePath[0]:=‘E:/images1/a000.bmp’ImagePath[1]:=‘E:/images1/a001.bmp’ImagePath[2]:=‘E:/images1/a002.bmp’ImagePath[3]:=‘E:/images1/a003.bmp’ImagePath[4]:=‘E:/images1/a004.bmp’ImagePath[5]:=‘E:/images1/a005.bmp’ImagePath[6]:=‘E:/im原创 2021-12-25 10:39:42 · 2381 阅读 · 0 评论 -
OpenCV常用通道分离split()合并merge()与图像拼接hconcat(),vconcat()
直接上源码,有不懂或者要指教的可以给我留言。void QuickDemo::channel_demo(Mat& image){vector mv, images;split(image, mv);/imshow(“单通道蓝色”, mv[0]);imshow(“单通道绿色”, mv[1]);imshow(“单通道红色”, mv[2]);/Mat tempg, tempr, dstb, dstg, dstr, temp;mv[1].copyTo(tempg);mv[2].copyTo原创 2021-04-25 18:05:06 · 308 阅读 · 0 评论 -
OpenCV 利用分离(split)合成(merge),分别显示Mat图像中两两通道组合图
Mat src;src = imread(“E:/Project/img/123.jpg”);src1= imread(“E:/Project/img/dog.jpg”);namedWindow(“input”, 0);imshow(“input”, src);vector channel;split(src, channel);imshow(“B”, channel[0]);imshow(“G”, channel[1]);imshow(“R”, channel[2]);Mat tem原创 2021-04-09 00:49:30 · 287 阅读 · 0 评论 -
关于空间域到频率域的转换
频率 指的是空域中像素值 变化 的快慢的程度。举个简单的例子,假定我们只考虑RGB中的R,我们的图像是一维的,共有2^n个像素,这样,低频就对应着这2n个像素,编号从0到2n-1,的R颜色值变化的比较慢,即把R作为像素位置的函数画图,图像的波动比较小。高频就对应着这2n个像素,编号从0到2n-1,的R颜色值变化的比较快,即把R作为像素位置的函数画图,图像的波动比较大。低频的极端例子就是所有像素从0到2^n-1,的颜色值都是一个数,比如R=128全程。这样图像就是一条直线,没有一点波动,频率为0.高原创 2021-03-22 17:34:37 · 3005 阅读 · 0 评论 -
Canny边缘检测算法的实现
图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波。我们知道微分运算是求信号的变化率,具有加强高频分量的作用。在空域运算中来说,对图像的锐化就是计算微分。由于数字图像的离散信号,微分运算就变成计算差分或梯度。图像处理中有多种边缘检测(梯度)算子,常用的包括普通一阶差分,Robert算子(交叉差分),Sobel算子等等,是基于寻找梯度强度。拉普拉斯算子(二阶差分)是基于过零点检测。通过计算梯度,设置阀值,得到边缘图像。Canny边缘检测算子是一种多级检测算法。1986年由John F.原创 2021-03-22 10:06:19 · 554 阅读 · 0 评论 -
opencv之createTrackbar()详解
函数说明:createTrackbar()函数的函数原型为:CV_EXPORTS int createTrackbar(const String& trackbarname, const String& winname,int* value, int count,TrackbarCallback onChange = 0, void* userdata = 0);trackbarname:这个参数用来给这个滚动条取一个名字;winname:这个参数用来指定你要吧这个滚动条用到那个窗口原创 2021-03-13 10:26:49 · 3334 阅读 · 0 评论 -
视觉图像处理中卷积核与滤波器的区别
卷积的目的是为了从输入中提取有用的特征。在图像处理中,有很多滤波器可以供我们选择。每一种滤波器帮助我们提取不同的特征。比如水平/垂直/对角线边缘等等。在CNN中,通过卷积提取不同的特征,滤波器的权重在训练期间自动学习。然后将所有提取到的特征“组合”以作出决定。卷积的优势在于,权重共享和平移不变性。同时还考虑到了像素空间的关系,而这一点很有用,特别是在计算机视觉任务中,因为这些任务通常涉及识别具有空间关系的对象。(例如:狗的身体通常连接头部、四肢和尾部)。单通道版本单个通道的卷积在深度学习中,卷积是元原创 2021-03-07 17:57:13 · 1997 阅读 · 1 评论