2019-08-15 14:00:03 charleszyy 阅读数 53
  • 深度学习与PyTorch实战

    系列课程包括深度学习中经典网络架构,结合计算机视觉与自然语言处理两大核心模块展开原理 分析与项目实战。通俗讲解深度学习中两大经典网络架构CNN与RNN模型,结合当下最主流PyTorch框架进行实战演练,选择当下NLP与CV中经典项目与解决方案,全部基于真实数据集,结合项目源码展开网络架构分析与实例应用。课程风格通俗易懂,用最接地气的方式带领同学们进军Ai,提供全部课程所需数据与项目源码。

    1438 人正在学习 去看看 唐宇迪

@[TOC]基于open cv中RGB直方图绘制及图像处理
通过大三一年对计算机视觉与模式识别的学习,对opencv有了更深一层的理解与认识,
以下是配置完成opencv之后RGB直方图绘制及图像处理的步骤及代码。
(步骤简单分为图像导入,RGB直方图绘制,及对图像进行包括腐蚀、模糊处理、canny边缘检测算法的处理)
以下是代码实现:
#include
#include<opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp> //图像处理头文件

using namespace cv;

int main()
{
// 读入一张图片(poyanghu缩小图)
Mat img = imread(“C:\Pictures\Saved Pictures\7444.jpg_wh300.jpg”);
imshow(“原图”, img);
//绘制RGB三色直方图
//1 参数准备
int bins = 256;
int hist_size[] = { bins };
float range[] = { 0,256 };
const float* ranges[] = { range };
MatND redhist, greenhist, bluehist;
int channels_r[] = { 0 };

//进行直方图的计算(包括红色分量、绿色分量、蓝色分量)
calcHist(&img, 1, channels_r, Mat(),//不使用掩膜
redhist, 1, hist_size, ranges,
true, false);

int channels_g[] = { 1 };
calcHist(&img, 1, channels_g, Mat(),//不使用掩膜
greenhist, 1, hist_size, ranges,
true, false);

int channels_b[] = { 2 };
calcHist(&img, 1, channels_b, Mat(),//不使用掩膜
bluehist, 1, hist_size, ranges,
true,
false);
//-----------------------------------绘制出三色直方图------------------------------------------
//参数准备
double maxvalue_red, maxvalue_green, maxvalue_blue;
minMaxIdx(redhist, 0, &maxvalue_red, 0, 0);
minMaxIdx(greenhist, 0, &maxvalue_green, 0, 0);
minMaxIdx(bluehist, 0, &maxvalue_blue, 0, 0);
int scale = 1;
int hisheight = 256;
Mat hisimage = Mat::zeros(hisheight, bins * 3, CV_8UC3);

//正式开始绘制
for (int i = 1; i < bins; i++)
{
//参数准备
float binvalue_red = redhist.at(i);
float binvalue_green = greenhist.at(i);
float binvalue_blue = bluehist.at(i);

int intensity_red =
cvRound(binvalue_redhisheight / maxvalue_red); //要绘制的高度
int intensity_green =
cvRound(binvalue_green
hisheight / maxvalue_green);
int intensity_blue=
cvRound(binvalue_bluehisheight / maxvalue_blue);
//绘制红色分量的直方图
rectangle(hisimage, Point(i
scale, hisheight - 1), Point((i + 1)*scale - 1, hisheight - intensity_red), Scalar(255, 0, 0));

//绘制绿色分量的直方图
rectangle(hisimage, Point((i+bins)*scale, hisheight - 1), Point((i+bins + 1)*scale - 1, hisheight - intensity_green), Scalar( 0, 255, 0));

//绘制蓝色分量的直方图
rectangle(hisimage, Point((i+bins*2)scale, hisheight - 1), Point((i+bins2 + 1)*scale - 1, hisheight - intensity_blue), Scalar(0,0,255));
}

//在窗口中显示出绘制好的直方图
imshow(“图像的RGB直方图”,hisimage);
waitKey(5);

//进行图像腐蚀操作
Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
Mat dstimage1;
Mat dstimage2;
erode(img, dstimage1, element);
//进行均值滤波图像模糊操作
blur(img, dstimage2, Size(7, 7));
//进行canny边缘检测
Mat edge, grayimage; //参数定义
//将原图像转换为灰度图像
cvtColor(img, grayimage, CV_BGR2GRAY);
blur(grayimage, edge, Size(3, 3)); //先是用3*3内核来降噪
//运行canny算子
Canny(edge, edge, 3, 9, 3);
// 在窗口中显示图片
imshow(“原图”, img);
//显示效果图
imshow(“效果图-腐蚀操作”,dstimage1);
imshow(“效果图-模糊操作”, dstimage2);
imshow(“效果图-canny边缘监测操作”, edge);

// 等待60000ms后窗口自动关闭
waitKey(60000);
return 0;
}

2019-12-06 09:31:32 SoaringLee_fighting 阅读数 46
  • 深度学习与PyTorch实战

    系列课程包括深度学习中经典网络架构,结合计算机视觉与自然语言处理两大核心模块展开原理 分析与项目实战。通俗讲解深度学习中两大经典网络架构CNN与RNN模型,结合当下最主流PyTorch框架进行实战演练,选择当下NLP与CV中经典项目与解决方案,全部基于真实数据集,结合项目源码展开网络架构分析与实例应用。课程风格通俗易懂,用最接地气的方式带领同学们进军Ai,提供全部课程所需数据与项目源码。

    1438 人正在学习 去看看 唐宇迪

DATE: 2019.12.6


https://docs.gimp.org/2.8/zh_CN/

GIMP 是跨平台的图像处理程序。GIMP 是GNU 图像处理程序(GNU Image Manipulation Program)的缩写。GIMP 适用于多种图像处理任务,包括照片润饰、图像合成和创建图像。

GIMP 有许多功能,它既可以作为简单的画图程序,也能作为专家级的照片处理程序,或在线批处理系统、批量图像渲染器,以及图像格式转换工具等。

GIMP 具有可延伸性和可扩展性,它能通过扩展插件 完成各种事情。其高级脚本接口允许用户通过编写简单的脚本完成从最简单到最复杂的各种图像处理过程。

GIMP 特性与功能预览:

  • 完整的图像工具套件,包括画笔、铅笔、喷枪、克隆等工具。

  • 基于平铺(Tile-based)的内存管理使图像大小限制在可用的磁盘空间内。

  • 对所有涂画工具都使用次像素(Sub-pixel)取样,因而能产生高品质的反锯齿效果。

  • 完全地 Alpha 通道支持。

  • 支持图层和通道。

  • 拥有程序化的数据库,可以从外部程序(如 Script-Fu) 调用 GIMP 内部命令。

  • 先进的脚本化处理能力。

  • 多级撤消/重做(只受磁盘空间大小限制)。

  • 变换工具包括旋转,缩放,切变和翻转。

  • 支持包括 GIF、JPEG、PNG、XPM、TIFF、TGA、MPEG、PS、PDF、PCX、BMP 在内的多种文件格式。

  • 选择工具包括矩形、椭圆、自由、模糊、贝赛尔曲线和智能剪刀。

  • 通过插件能让您轻松地添加对新文件格式的支持和效果滤镜。

2016-04-21 12:18:08 wenhao_ir 阅读数 2083
  • 深度学习与PyTorch实战

    系列课程包括深度学习中经典网络架构,结合计算机视觉与自然语言处理两大核心模块展开原理 分析与项目实战。通俗讲解深度学习中两大经典网络架构CNN与RNN模型,结合当下最主流PyTorch框架进行实战演练,选择当下NLP与CV中经典项目与解决方案,全部基于真实数据集,结合项目源码展开网络架构分析与实例应用。课程风格通俗易懂,用最接地气的方式带领同学们进军Ai,提供全部课程所需数据与项目源码。

    1438 人正在学习 去看看 唐宇迪

图像处理开发资料、图像处理开发需求、图像处理接私活挣零花钱,可以搜索公众号"qxsf321",并关注!
图像处理开发资料、图像处理开发需求、图像处理接私活挣零花钱,可以搜索公众号"qxsf321",并关注!
图像处理开发资料、图像处理开发需求、图像处理接私活挣零花钱,可以搜索公众号"qxsf321",并关注!

在cvEqualizeHist的函数定义源码中发现了宏定义CV_IMPL,如下:

CV_IMPL void cvEqualizeHist( const CvArr* srcarr, CvArr* dstarr )

上网查询CV_IMPL的含义如下:

在internal.hpp文件里面有定义:
#  define CV_IMPL CV_EXTERN_C
而关于CV_EXTERN_C,则在types_c.h里面有定义
#  define CV_EXTERN_C extern "C"

其实就相当于extern "C",这个的含义如下:

编程语言种类繁多各有优劣,因此在做软件工程时,往往会出现不同语言嵌入或互相调用的情况;例如在C和C++之间就经常出现互相调用!虽然C++是C的超集,但是,它们之间的编译器是不同的,这就引发了各自的编译器在对C和C++进行编译时要依据哪一个作为大家都认可的规范或者约定的问题。很幸运的是,通过一些基础特征我们制定了这样的一个规约,这就是“C”的出处,这些基础特征就是:
1)这种调用编译是一种“超”链接;
2)这种调用编译不能影响现有的编译规范;
3)C++是C的拓展,是C的升华。
根据1),extern关键字可以表达这种“超”链接;根据2)、3)用“C”来规约在C++中对C的编译。
因此,extern "C"表明了一种编译规约,其中extern是关键字属性,“C”表征了编译器链接规范。对于extern "C"可以理解成在C++/C中的混合编程的编译指令。

图像处理开发资料、图像处理开发需求、图像处理接私活挣零花钱,可以搜索公众号"qxsf321",并关注!
图像处理开发资料、图像处理开发需求、图像处理接私活挣零花钱,可以搜索公众号"qxsf321",并关注!
图像处理开发资料、图像处理开发需求、图像处理接私活挣零花钱,可以搜索公众号"qxsf321",并关注!

2017-07-25 11:08:55 ds1231h 阅读数 537
  • 深度学习与PyTorch实战

    系列课程包括深度学习中经典网络架构,结合计算机视觉与自然语言处理两大核心模块展开原理 分析与项目实战。通俗讲解深度学习中两大经典网络架构CNN与RNN模型,结合当下最主流PyTorch框架进行实战演练,选择当下NLP与CV中经典项目与解决方案,全部基于真实数据集,结合项目源码展开网络架构分析与实例应用。课程风格通俗易懂,用最接地气的方式带领同学们进军Ai,提供全部课程所需数据与项目源码。

    1438 人正在学习 去看看 唐宇迪

当今科技越来越追求智能科技,CV大约从十年前就逐渐开始迅速发展,直至今日的火爆。就我本人的视角来看,CV从原始的基于数字图像处理渐渐发展为了采用机器学习、深度学习等综合性的学科。下面逐步分析我对此的几点认识。
我认为计算机视觉是从数字图像处理发展来的,而数字图像处理的基础又是数字信号处理。翻看Gonzalez的Digital Image Processing,可以发现里面许多章节是DSP的内容,如第四章-频域滤波和第五章-图像复原与重建(DFT/FFT和fiber的知识)、第七章-小波和多分辨率处理(小波变换的知识)、第八章-图像压缩(压缩编码的知识)。这些对与我们来说基本都是“先验知识”了,所以接受起来相对较快。
再简单说一下其他章节。前两章是介绍性内容略过。第三章-灰度变换与空间滤波,前半部分讲如何将彩色图变为灰度图,即如何把一个三维的图像矩阵变为一个一维的图像矩阵,其element的范围是(0-255)。(彩色图像一般采用24位实现法,即R/G/B分别取0-255)。后半部分主要是卷积,又是之前学过的内容了。
彩色图像在第六章-彩色图像处理中进一步进行了描述。详细来说,除了最常用的RGB模型,还有CMY和CMYK模型、HSI模型。我认为这一章的内容只是把前面对于灰度图处理的知识扩展到了彩色图像上面而已。
第九章-形态学图像处理,主要讲了开闭运算、膨胀腐蚀。以我个人的语言来说,膨胀是将图像的一部分扩大变模糊,腐蚀是将图像的一部分缩小变清晰。(感觉是很字面的意思)。应用的话,比如我们要处理的图像中有一条线应该是连起来的,但是转为灰度图或者其他操作之后线断了,我们就可以考虑通过膨胀将它重新连起来。再比如ORC字符识别中,有一些字很粗很不清晰,我们可以通过腐蚀操作将它缩瘦一点。
进一步的,开运算是先腐蚀后膨胀,作用是“平滑物体的轮廓、断开较窄的狭颈并消除细的突出物”。闭运算是先膨胀后腐蚀,作用是“弥合较窄的间断和细长 沟壑,消除小的孔洞,填补轮廓线中的断裂”。
第十章-图像分割是讲了边缘检测、角点检测、霍夫变换和各种算子。关于这部分内容我在之前整理过一个文档,回去找一下再传上来。
而图像分割这部分就我而言是用模式识别、机器学习的方法较多。关于这部分内容会在下一篇中写到。
第十一章-表示和描述中讲了边界追踪、骨架提取等,还有各种边界、区域描绘子。老实说我在这一章上的知识储备很不成体系,因此不多讲。里面的内容只是用过骨架提取,也可以说是细化。这一方法可以应用在手写字体识别和生成上(我便是在这一项目中用到了骨架提取的)。
Gonzalez在第十二章中提到了模式识别,有模板匹配、神经网络、分类器等方法。有关模式识别的内容在下一篇中会详细说明。

PS:写了这么多真的有点累了,过程中很多地方需要重新翻书,也发现自己记忆中很多的错误。是一个很有意义的整理。
记录于2017-07-25,11:08

2019-11-25 09:52:21 qq_35374722 阅读数 17
  • 深度学习与PyTorch实战

    系列课程包括深度学习中经典网络架构,结合计算机视觉与自然语言处理两大核心模块展开原理 分析与项目实战。通俗讲解深度学习中两大经典网络架构CNN与RNN模型,结合当下最主流PyTorch框架进行实战演练,选择当下NLP与CV中经典项目与解决方案,全部基于真实数据集,结合项目源码展开网络架构分析与实例应用。课程风格通俗易懂,用最接地气的方式带领同学们进军Ai,提供全部课程所需数据与项目源码。

    1438 人正在学习 去看看 唐宇迪

图像的库是很多的,我发现自己真的额也是不精通,以后会专门使用几个库,让自己对一个库的知识体系更加完整,要不然真的很零散。然后在图像处理这方面,决定好好学习使用一下cv2。
opencv-python的文档在这里

安装

pip install opencv-python

读取你的图像数据

import cv2
img = cv2.imread("C:\\world.jpg")

这样的读取进来的数据是按照H,W,C的顺序读取进来的,然后数据的类型就是numpy矩阵,默认是uint8类型,还有个重点就是三个通道的顺序是BGR,和我们常识相反。想要转换成深度学习中可以处理的话,最好直接转换成0-1之间:

img = img.astype(np.float32)/255.

保存图像

如果想要保存的话,需要注意cv2使用的函数认为0-255之间的,所以刚才处理的图片一般要转换回这个区间才可以,否则可能保存的图片全是黑色的!

cv2.imwrite("C:\\world2.jpg", img*255.)

灰度图片

注意点:操作的时候使用0-1区间的像素值进行操作;显示的时候用float类型的0-1区间或者uint8类型的0-255区间,imshow会自动识别;但是imwrite保存的时候使用0-255区间!

  1. 直接就以灰度图片的形式读入:
img = cv2.imread("C:\\world.jpg", cv2.IMREAD_GRAYSCALE)
  1. 从BGR图转换过来
img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)

还有注意的是,灰度图片的numpy矩阵的shape是H,W,不带C!如果想要增加一个维度的话,可以使用下面这个numpy基本操作:

img_gray = img_gray[:,:,None]

这样的话,得出的维度就是H,W,C,其中C=1。

显示图片

注意加上cv2.waitKey(0)不会有黑屏的情况。后面必须加上这句话!cv2.waitKey(delay),delay参数表示延迟多少毫秒。默认情况为0。当delay≤0,可以理解为延迟无穷大毫秒,就是暂停了。(参考链接

cv2.imshow('pic', img)
cv2.waitKey(0)

或者

cv2.imshow('pic', img*255.)
cv2.waitKey(0)

Cv图像处理

阅读数 312

没有更多推荐了,返回首页