mfc opencv 摄像头开发带界面产品使用MFC合适,还是QT更好

posts - 7,&
comments - 86,&
trackbacks - 0
&&&&&&&& 自己做了一个界面库,纯C++的,在这里献个丑,大家看看吧。&&&&&&&& &&&&&&&& &&&&&&&& 贴2个效果图&&&&&&&& &&&&&&&& &&&&&&&& 目前界面库暂命名为clayui,意思是”黏土UI“,为什么要叫黏土UI呢,因为我的想法是让clayui能方便的插入到各种开发环境中,比如,它可以与MFC混着一起用,也可以在D3D或者OPENGL中变成一个HUD,当然,你愿意的话,把它放到QT中也是可以的,当然当然,肯定没人会这么做......&&&&&&&& 那么,clayui是如何做到这一点呢?其实很简单,clayui有自己的绘图库,负责界面上所有图形要素的绘制,把他们绘制到一个图形缓冲区中,这个缓冲区其实就是一个32位的带alpha通道的BMP图像,使用者只需要得到这个BMP图象缓冲,就可以把它像贴图一样贴到任何地方,甚至你愿意的话,在这上面绘制自己的图形也是可以的。&&&&&&&& 我的目标是将clayui做成一个C++版的 Flex/WPF/Silverlight,因为,Flex/WPF/Silverlight的一个共同之处就是能编写出具有华丽效果的界面,然而,要想在C++里使用他们,是比较困难的。当然,你可以在MFC里放上一个FLASH Activex控件,然后”宣称“C++里也是可以用的,但是,这种用法,我个人觉得用起来很憋屈。Flex那是肯定只能使用Flex Builder来进行开发的,而WPF/Silverlight,可能是我使用得不多,或者孤陋寡闻,确实不知道如何在C++里使用,只知道可以用C#来做开发,可能也可以使用托管c++来做,这方面我的知识比较缺乏,就不继续说了。&&&&&&&& 然后,可以使用C++来实现这些效果的,我知道的,就是大名鼎鼎的QT了,QT的确是个好东西,不过我没用过。曾经,有一个机会摆在我的眼前,那次我本可以和QT结缘的,当时整个项目使用的是MFC,有个界面BOSS要求界面要好看,要华丽,要IPhone一些,于是我想到了QT,不过在翻阅众多资料之后,始终没有找到如何在MFC里插入一个QT界面的完美的解决方案,由于时间紧迫,最后,我还是可耻的使用了FLASH Activex控件,这个界面也被公司里的Flex开发人员包揽了,记得好象是用FSCommand传递的消息,当时,看着BOSS在会议上夸那个用Flex的人,我心里真的很不是滋味。当然,如果MFC里能很方便的插入一个QT开发的界面的话,今天就不会有clayui了。&&&&&&&& 还有其他界面库,例如CEGUI,这个也用过,但是要用好,还是挺难的,其他的,比如GTK,MINIGUI,wxwidgets之类的,就没缘分去使用他们了&&&&&&&& 这里,还要提一下scaleform,这个号称是硬件加速的FLASH界面开发库,玩过游戏大作的,肯定多多少少都知道这个,像质量效应,星际2就用的这个,甚至虚幻引擎都把它集成进来了,当然,它的表现力确实不是吹的,效果很好,不过我没有使用过,当年BOSS开会时对我发彪,界面能不能搞得像星际2一样好看,我说,可以的,买人家的专业界面库,星际2的界面就是用这个做的,BOSS斜着眼睛瞄着我,多少钱,几千几万?如果能达到那个效果,就让财务去买好啦,我说,听说好象要7,8万美金,BOSS顿了一下,那好,那你先去研究下,看到底怎么样。然后我去scaleform的官网申请了下,后来,scaleform没有鸟我,BOSS也再没提这个事,这事就这样,结了。&&&&&&&& scaleform的老总据说是adobe的老总的弟弟,不知道是不是真的,但是不管是不是真的,sclaeform应该是获得了flash的支持的,但是他本身是从gameswf发展而来,从gameswf一个开源flash播放器发展到现在三千多万被autodesk收购,真的是很不简单。scaleform的具体开发流程我不是很了解,能不能使用C++来开发更是不得而知,网上关于这方面的资料少之甚少,如果园子里有人用过,不妨说一下。&&&&&&&& 还有就是国内的几个换肤库,在baidu里搜”界面库“,第一页都是那几个换肤库打的广告,还有direct ui,我个人觉得这是在概念炒作,我个人也下载了direct ui的例子,但是,效果跟flex/silverlight/wpf比起来,还差了好远。这几个换肤库,说实话,还是很好用的,只需要少量代码,就可以换个漂亮的皮肤,用很少的工作量获取不错的效果,这个性价比是蛮高的,我刚工作时就看过APPFACE的广告贴,到现在,他已经由一个老总,一个程序员,一个美工的小工作室,变成了一个公司,据说已经获得投资,可以说,走上了正轨,还听说,VS的下一个版本中将集成他的换肤库,这个消息,个人觉得有点假,但是不管怎样,这也是人家努力的成果,希望他以后发展越来越好。&&&&&&&& 再就是国内几个大软件的界面,QQ,讯雷做得是很不错的,QQ还有个WPF的概念版,如果C++能实现WPF的效果,估计QQ的会做得更好,个人觉得讯雷7的界面比QQ的更加动态一些。其他软件,比如类似115的一些下载客户端,360,都是实现的换肤,几乎看不到华丽的透明,或者动态效果。还有最近比较热的开源界面框架,chrome和金山卫士的,通过这些开源界面框架,我们能学到很多知识,也能做出好看的界面,但是比较遗憾的是缺乏一个完善的界面编辑器,而一个比较完善的界面编辑器的开发难度,我个人觉得不在开源框架之下,所以,这方面,还是有很多工作需要去完善的,也期待研究这些框架的大牛们能带给我们更多的惊喜。&&&&&&&& 好,以上就是个人对界面方面的一些乱弹,现在,还是来说说自己的clayui吧,clayui作为一个界面库,也实现了窗口裁剪,消息传递等基本功能,并提供了几个自带的控件,就是上图里看到的那些了。clayui是免费使用的,但是目前暂时不开源,如果你有任何关于clayui的使用问题,请PM我,我会不遗余力的帮助你。
&&&&&&&& 目前clayui包含的功能如下:
&&&&&&&& 1. 支持导入flash 6.0格式的FLASH动画(不支持actionscript)
&&&&&&&& 2. 支持导入带alpha通道的PNG图形
&&&&&&&& 3. clayui通过freetype支持对文字的渲染
&&&&&&&& 4. 支持对矢量/ 栅格图形的旋转,缩放,反走样
&&&&&&&& 5. 支持tween缓动动画,色调渐变
&&&&&&&& 6. 支持窗口的基本功能:窗口裁剪,消息传递等
&&&&&&&& 7. 支持换肤,窗口的布局
&&&&&&&& 8. 支持滤镜效果:阴影,发光&&&&&&&& 还说明一下,clayui占用的内存只有10-15M,clayui还有一个for windows mobile的版本,占用内存5M左右。例子占用的内存比较大的原因一个是MFC的原因,还有我在例子里创建了3个尺寸比较大的DC,大家看看代码就知道了。&&&&&&&& 最后,祝愿大家的软件界面,越来越IPhone
阅读(8160)
&re: 献丑做了个C++界面库,大家来评评吧
看了下,挺好的,感觉再精细些,UI不好做啊。&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
真是不鸣则已,一鸣惊人。效果不是很华丽,但是已经很出众。有时间看看这个界面库&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
可惜不是开源的,没法往linux下移植.&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
这有点困难,属性值改变通知事件是需要语法层面支持的,用C++不容易实现。&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
@K.V@chassicUI的效果的确不是很好,因为美工方面都是我自己用FLASH8做的,做成现在,已经是我这个程序员在美工方面的最大造诣了......所以大家还是着重看看这个界面库具体能实现怎样的效果吧&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
@easyshop属性值改变通知事件,这个貌似QT也实现了吧,通过信号槽的方式,可能比较困难,但是怎么说呢,有志者事竟成吧&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
@inter1965我也想往Linux下移植,我本身也做过cygwin+gcc的开发,只是对Linux不是很熟悉,因为Linux版本比较多,是不是需要针对每个版本都编译一个.so文件呢?&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
很赞同你做的工作,但是对这句话:还有最近比较热的开源界面框架,chrome和金山卫士的,通过这些开源界面框架,我们能学到很多东西。但想让他们做到WPF/FLEX的效果,那还是有难度的。不是很赞同&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
@万连文非常感谢chrome开源框架的大牛给出的意见,确实本人对chrome开源框架不是很了解,既然大牛不赞同,那么表明chrome开源框架应该是可以实现类flex/wpf/silverlight效果的,希望大牛以后能介绍一下这方面知识,我会把博文修正一下。&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
很好了
^_^&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
小有成效啊!耗时多久?&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
@CR苏杭大概2年吧,2年前有此构想,但当时没有时间也没有技术现实,不过经过2年技术积累后,觉得技术上应该是没有问题了,于是最近3个月几乎全职开发,做成了现在这样,还包括一个尚未发布的界面编辑系统。&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
窗体虽然支持透明,但是不能反映背景的变化,如窗体后面有个flash播放程序看到的将是静止的&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
不错,支持一下。&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
@yzp窗体透明以及反映背景的变化,这2个并不是由界面库来做的,窗体透明的代码我是直接写在了下载的例子工程里,对窗体透明有兴趣的可以看看我的实现代码。界面库本身是跟平台无关的,所以在MFC的框架下实现窗体透明什么的还是需要靠MFC本身来实现,这方面我没有去深入研究,所以反映背景的变化这个我就没实现了&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
貌似调用了ci文件,ci文件怎么编辑?&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
@zqbci文件是clayui界面编辑器生成的布局文件,界面编辑器目前正在完善中,以前的版本可能只有我自己才知道怎么用......目前正在增加它的“人性化”,还未公开,所以,您目前还不能编辑这个文件。&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
牛呀,支持&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
@clayui可以用模板模拟属性,我就这么搞过,实现起来也不太复杂。但是有一些使用限制,一个是只能静态链接代码,如果是动态库导出接口只能再封装一层了,另一个是对字符串属性处理很麻烦要么自己封装字符串类要么对字符串不使用“属性”特性。另外性能上也有些影响,不过代码写起来还是很爽的。&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
@飞舞的烟灰缸谢谢提供思路~~&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
其实QT是可以嵌入到MFC中的,有两个办法可以实现,一个是用QT官方提供的一个类,名字我忘了,你去网上一搜就搜得到。还有一个方法是直接写成ActiveX,然后嵌到MFC或者VCL的程序中。我没有做过这种事但是我同事在实际项目中做过,没什么问题。&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
你好,我对你的渲染流程比较感兴趣。考虑如下的场景:一个控件不停的旋转,你的渲染流程是整个这个控件的Z轴上覆盖到的控件都会更新吗?还是有什么优化手段。。或者更直接点的问题,对动画的渲染有啥优化手段没?&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
@weolar会全部都更新。对动画的渲染这个分为2部分,一个是动画的计算(包括坐标,旋转角度,缩放系数),这个是很快的,我并没有使用什么特别的优化手段。第2个是图形渲染,其实主要的优化都在这,包括裁剪什么的,关于图形渲染方面的优化,这真不是1,2句话就能说清的,图形学这可是一个大坑,呵呵。&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
@clayui呵呵,多谢答复。其实我在那个讲flash player渲染算法的哥们的博客上也看到了你的身影,所以我猜你肯定在这块也投入时间研究了不少,哈哈。好的,以后有什么问题我还会继续请教的。&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
@weolar呵呵,图形渲染方面的确花了很长时间研究,其实我本来只是打算做界面库的,但是做起来,才发现要实现界面动画,还非得把图形渲染这个问题解决了,用GDI,GDI+都试过,效率效果都不是很好,用开源的图形库吧,总觉得不是很好,没办法才自己去搞了个图形渲染的库,用来支持这个界面库。&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
@clayui呵呵。。我也正有这打算,也在为界面库选一款渲染引擎。我的QQ,有空想多交流交流。。&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
不开源,一个人是发展不起来的&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
谢谢你的建议,clayui现在已经应用到了多个项目中,发展得很好,呵呵。&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
来这个博客的都是些高人,我现在还在上大学,计算机专业,很想向前辈们学习啊……&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧
现在正在构建html描述内容,css描述样式,js做脚本这种形式的框架。&&&&&&
&re: 献丑做了个C++界面库,大家来评评吧[未登录]
怎么调用呢?接口是??&&&&&&
293031123456781011121314151617181921222324252627282930123456789
阅读排行榜
评论排行榜下次自动登录
现在的位置:
& 综合 & 正文
搭建Qt界面的OpenCV开发环境
OpenCV包含了大量的机器视觉处理,虽然也提供了highgui的界面功能,但实在有限(也就是一个窗口,加一些使用像素进行绘图的方法),与用户交互相关的功能极少(比如有Trackbar),貌似连个可视化的用户接口的button也没见过,而Qt正好能弥补OpenCV在这些方面的不足:通过OpenCV完成底层算法,用Qt完成上层的应用接口,哇咔,这不是完美组合么!本文原来的初衷是想通过Qt开发来实战练练C++,现在看来是要Qt与OpenCV一起搞了。这篇就是安装Qt及在Qt中配置OpenCV的开发环境。
安装Qt存在的一个普遍的问题是:低版本的gcc可能无法编译高版本的Qt。我参照了 ,搭配使用Qt4.8.6+QtCreator2.6.1+gcc4.9.2,这些软件的下载链接依次是:
qt-everywhere-opensource-src-4.8.6.tar.gz:
qt-creator-linux-x86_64-opensource-2.6.1.bin:
gcc-4.9.2:
根据自己的机器环境选择下载,我的环境是:CentOS 6.5 64bit。qt-creator仅仅是Qt开发啊的IDE环境,qt是指包含相关的开发库,两者是不同的。在使用Qt开发的过程中完全可以通过vi+命令行的方式搞定,一开始为了能更深入一些,我也是这样做的。但在之后的实际开发中,由于qt-creator提供语法高亮,快速定位源码等很好用的功能,推荐直接使用qt-creator这个集成开发环境。上面gcc链接的镜像是来自北交大,也可以自己选择镜像下载(我用的是学校的ftp)。
1. 更新gcc到4.9.2
进入gcc解压包所在目录,
mkdir gccout
" 新建一个目录用于保存编译gcc生成的文件
" 在gccout目录中运行所有命令
../contrib/download_prerequisites
" 安装一些依赖项
../configure --prefix=/usr/local --mandir=/usr/local/share/man --enable-checking=release --enable-languages=c,c++,java --enalbe-java-awk=gtk --disable-multilib
" 编译,大约半个多小时吧,看机器性能了
make install
" 安装,很快,几十秒
按上面的--prefix配置,gcc4.9.2会安装到/usr/local目录下,系统原来会有旧版本的gcc(要安装新版gcc必须要求系统中已经含有gcc,这样才能编译gcc源码),因此还要更新gcc到刚安装的4.9.2,则
" 切换到root
cd /usr/bin/
mv gcc gcc477
" 将旧版本的gcc软链接重命名,还可以通过gcc477使用旧版gcc
mv g++ g++477
" 将旧版本的g++软链接重命名,还可以通过g++477使用旧版g++
ln -s /usr/local/bin/gcc gcc
" 将gcc链接为gcc4.9.2
ln -s /usr/local/bin/g++ g++
2. 编译安装Qt-4.8.6
解压缩之后,进入Qt目录,
./configure
" 编译时间很长,2个多小时吧
make install
我第一次编译中途遇到一个error,提示没有gstream,我使用yum直接就更新了,
yum install gstream*
再接着make就成功了。接着要使用Qt还要配置Qt所在的路径(即环境变量),
cd /etc/profile.d/
" 这个目录中各种环境变量
" 新建一个环境变量配置文件
在qt4.sh中添加如下的信息,当然,Qt默认安装目录是在/usr/local/Trolltech/Qt-4.8.6,我没有改(改过的修改QTDIR变量就好了),
export QTDIR=/usr/local/Trolltech/Qt-4.8.6
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPAT
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
最后通过source /etc/profile使配置的环境变量生效就OK了。
3. 安装qt-creator-2.6.1
因为下载的qtcreator是bin格式文件,因此直接在shell中运行,
./qt-creator-linux-x86_64-opensource-2.6.1.bin
安装过程同Windows下一样,提示安装目录,我保留默认的opt/qtcreator。安装好后在CentOS的启动栏菜单中就能看Qt-creator了。但要让qt-creator配合Qt4.8.6使用,则还要再qt-creator中进行一些配置,执行qt-creator菜单栏Tools-&Option...,配置如下图:
在qt-creator中配置Qt路径
配置用于编译的gcc
这时就可以使用qt-creator新建Qt工程了。然而,我们下面的例子却不打算这么做。除非你是高手,否则我们应该使用命令行而非qt-creator来进行工程规划,qt-creator仅仅是为那些为了赶时间的设计师准备的!
4. Qt与OpenCV强强联合的牛刀小试
这时我们可以写个小程序小小体验一把了,我们来写个程序实现:通过Qt弹出文件选择对话框,然后用OpenCV中的imread函数读取图片,最后通过Qt界面将图片显示出来。
其中的困难点在于Qt的图片数据类型QImage格式与OpenCV的Mat格式不一致,因此要实现转换,这通过下面的函数实现Mat到QImage的转换,打开文件对话框和显示图片的都在main函数中,下面是:
* FileName : main.cpp
: xiahouzuoxin @
: Sun 23 Nov :47 PM CST
* Copyright (C) MICL,USTB
#include &QApplication&
#include &QWidget&
#include &QImage&
#include &QLabel&
#include &QPushButton&
#include &QHBoxLayout&
#include &QVBoxLayout&
#include &QFileDialog&
#include &cv.h&
#include &highgui.h&
using namespace
static QImage Mat2QImage(Mat& image)
if (image.channels()==3) {
cvtColor(image, image, CV_BGR2RGB);
img = QImage((const unsigned char *)(image.data), image.cols, image.rows,
image.cols*image.channels(), QImage::Format_RGB888);
} else if (image.channels()==1) {
img = QImage((const unsigned char *)(image.data), image.cols, image.rows,
image.cols*image.channels(), QImage::Format_ARGB32);
img = QImage((const unsigned char *)(image.data), image.cols, image.rows,
image.cols*image.channels(), QImage::Format_RGB888);
int main(int argc, char *argv[])
QApplication app(argc, argv);
QWidget *wn = new QWidget;
wn-&setWindowTitle("disp image");
QString filename = QFileDialog::getOpenFileName(0, "Open File", "", "*.jpg *.png *.bmp", 0);
if (filename.isNull()) {
return -1;
Mat image = imread(filename.toAscii().data(), 1);
QImage img = Mat2QImage(image);
QLabel *label = new QLabel("", 0);
label-&setPixmap(QPixmap::fromImage(img));
QPushButton *bnt = new QPushButton("Quit");
QObject::connect(bnt, SIGNAL(clicked()), &app, SLOT(quit()));
QVBoxLayout *layout = new QVBoxLayout;
layout-&addWidget(label);
layout-&addWidget(bnt);
wn-&setLayout(layout);
wn-&show();
return app.exec();
关键是上面的代码直接在Qt中能编译吗?肯定不行,用脚趾头想想就知道,Qt怎么能找到cv.h这些头文件呢,又怎么能找到imread这些OpenCV中的函数呢!
因此我们要在Qt中使用OpenCV,我们必需要将OpenCV头文件的路径和imread函数的库和库路径告知Qt,如果你一直像我一样使用的是Makefile来编译OpenCV工程,那将OpenCV集成到Qt中的那真是小菜一碟了。我们先用qmake -project命令生成pro文件,在Qt工程中起重要作用。要在Qt中使用OpenCV,我们只要修改pro文件就好了,
opencv嵌入到Qt中
从上图知,我们在pro文件的INCLUDEPATH变量中添加了OpenCV头文件所在路径,在LIBS变量中添加了库所在路径及所使用的库(-L指定库路径,-llib指定程序中用到的lib库)。修改完pro文件保存后,这个时候再使用qmake命令编译,就可以生成Makefile文件,执行make就得到可执行文件了。我们不妨看看执行显示图片的结果。
使用Qt中的label显示lyc美图
整理一下上面编译Qt程序依次用到的命令(其实就3个),
qmake -project
" 生成pro文件,修改后执行下面的命令
" 生成Makefile文件
" gcc编译生成目标可执行文件,可执行文件名默认为当前目录名
这个例子的。
&&&&推荐文章:
【上篇】【下篇】25392人阅读
OpenCV(60)
一直对MFC对OpenCV的支持不好而耿耿于怀,了解了Qt对OpenCV支持很好,但网上这方面的资料很少。大部分的图形交互的设计都是基于OpenCV2.0之前的数据结构lpImage进行的。最近得到了一本好书《OpenCV 2 Computer Vision Application Programming Cookbook》,下载的链接为,2011年5月出版,全书都是基于OpenCV2.2版本的实现,采用了新的数据结构。我这里强烈建议利用C++开发的朋友们不要再使用老版本的数据结构了,实在影响开发效率。至于大家最熟悉的参考书《learning
OpenCV》和《OpenCV教程——基础篇》这两本广为流传的书,我的看法是已经远远不能满足OpenCV新版本的学习了。真的希望这本新书的中文版尽快出炉。
参考这本书的利用Qt创建GUI,不过书中的办法是在Qt Creator下实现的,我这里通过VS2008+Qt实现。下面结合一个例程介绍一下如何在Qt的GUI环境下开发OpenCV。
先新建工程Qt Project --& Qt Application,点击finish完成工程的创建。然后在项目属性里的连接器的附加依赖项里面添加opencv的lib文件。工程创建好之后,一个后缀名为.ui的文件就是关于界面设计的。首先创建两个按钮,拖拽两个Push Buttons到Form中去,修改其属性,一个名字为Open Image,一个为Process。右键按钮选择connect signal为其添加响应函数,选择clicked()。对应的cpp文件多出了on_OpenImage_clicked函数,代码如下:
#include &qttest1.h&
qttest1::qttest1(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
ui.setupUi(this);
qttest1::~qttest1()
void qttest1::on_OpenImage_clicked()
接下来要在对应的头文件中添加显示图片的必要代码,添加QFileDialog类的声明,OpenCV必要的include头文件包含,在类中声明一个cv :: Mat成员变量。代码如下:
#ifndef QTTEST1_H
#define QTTEST1_H
#include &QtGui/QMainWindow&
#include &QFileDialog&
#include &ui_qttest1.h&
#include &opencv2/core/core.hpp&
#include &opencv2/highgui/highgui.hpp&
class qttest1 : public QMainWindow
qttest1(QWidget *parent = 0, Qt::WFlags flags = 0);
~qttest1();
Ui::qttest1C
cv::M // cv图片
private slots:
void on_OpenImage_clicked();
#endif // QTTEST1_H
接下来添加on_OpenImage_clicked的函数内容。代码如下:
void qttest1::on_OpenImage_clicked()
QString fileName = QFileDialog::getOpenFileName(this, tr(&Open Image&), &.&, tr(&Image Files (*.png *.jpg *.jpeg *.bmp)&));
image = cv::imread(fileName.toAscii().data());
cv::namedWindow(&Original Image&);
cv::imshow(&Original Image&, image);
类似的办法添加Process按钮的相应代码:
void qttest1::on_Process_clicked()
cv::flip(image, image, 1);
cv::namedWindow(&Output Image&);
cv::imshow(&Output Image&, image);
这样就可以实现一个普通的按钮响应。但我们的目的是将图片显示在对话框form中,这还需要进一步深入学习。与MFC中显示图片需要CvvImage类似,要想在Qt的Form中显示图片,图片的格式也必须为QImage,需要将cv::Mat的BGR通道顺序变换为RGBA,QImage的格式为Format_RGB32,调用cvtColor实现(这里例程里调用的为BGR2RGB,然后QImage的格式为Format_RGB888,但我试验显示结果是有问题的,故自己调整了一下)。(后经实验,BGR2RGB,Format_RGB888这组参数对于webcam视频是正确的,对于我当时的实验照片是不正确的,格式的问题真是混乱!!!)实现代码如下:
cv::cvtColor(image, image, CV_BGR2RGBA);
QImage img = QImage((const unsigned char*)(image.data), image.cols, image.rows, QImage::Format_RGB32);
QLabel *label = new QLabel(this);
label-&move(200, 50);
label-&setPixmap(QPixmap::fromImage(img));
label-&resize(label-&pixmap()-&size());
label-&show();
注意打开图片的路径不要有中文,最后的显示结果为
相关代码的下载地址为
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1677495次
积分:15528
积分:15528
排名:第428名
原创:83篇
评论:1442条
文章:55篇
阅读:1312561
(1)(3)(1)(1)(4)(5)(3)(3)(6)(4)(1)(13)(23)(13)(1)(1)
&a href=&http://blog.csdn.net/xiaowei_cqu/&xiaowei_cqu,浮夸的演技也是演技啊
信则有不信则无&br&看是否有缘入此门
信则有不信则无看是否有缘入此门
即使自己很努力的改变,结果也不尽如人意,为了避免伤害自己最亲近的人,就想远离他们,结果会陷入到恶性循环。&br&&br&想告诉自己最亲近的人,我有局限,希望你们适应我。但是对方都是一副不理解的样子,一开始我说的时候他们听不懂,等到真的发生了交往中我做的不恰当的地方,他们又会惊讶你怎么这样。哈哈,越来越了解自己的结果就是这些都习惯了
即使自己很努力的改变,结果也不尽如人意,为了避免伤害自己最亲近的人,就想远离他们,结果会陷入到恶性循环。想告诉自己最亲近的人,我有局限,希望你们适应我。但是对方都是一副不理解的样子,一开始我说的时候他们听不懂,等到真的发生了交往中我做的不…
&img src=&/7cadb6aa33ddaf68f83e1ac_b.png& data-rawwidth=&501& data-rawheight=&425& class=&origin_image zh-lightbox-thumb& width=&501& data-original=&/7cadb6aa33ddaf68f83e1ac_r.png&&
OpenCV做过一堆东西,乱七八糟的,本科快毕业那会儿,表哥回国到中科院当教授,我们一起做了几个项目,后来我们都辞职了,在一起创业,干了3年,大大小小做过一堆项目。经过千难万险,我们最后分开了。。。哈哈哈&br&&br&-----------------V.V----------------&br&言归正传,说下用OpenCV做过的东东&br&&br&1:毕设(表打我)&br&
摄像头拍门口,有人出入时,整体像素的sum和会变化,这时拍一张照片,存图,PHP做了个网页能展示图片。没了&br&
这么做的目的是监控系统大部分时间都拍摄的静止画面,不但浪费空间,还检索困难。相当于把三维视频变为二维的图片,降维后提高检索效率。&br&
其实做的也不算敷衍,当时有个项目要做这个,没时间搞毕设了,就梨花接木neng过来了。&br&&br&&br&2:天津工业大学监控(小试各种刀)&br&
还是拍出入口,检测人体运动后存图,涵盖了食堂、水房、楼门口等出入口。加上用485线控制海康的中速球来回转动巡航。我写的C++和OpenCV程序,在监控室安装6个屏幕,每个显示4画面。&br&
同去的还有北理的两个博士,他们参与的是传感器采集管道流量和压力,汇集到监控室labview程序,写入数据库,在局域网web上展示。&br&
项目就是练的各种系统集成,组装。程序上没啥复杂的。&br&&br&&br&3:精品课堂跟踪项目(技术开始有意思)&br&
教室里安装2种摄像头,墙壁上1.5米高度安装多个普通的固定摄像头,检测到如果有学生站起来,就通过多个摄像头的距离差测算出起立学生的具体位置,485信号线指挥黑板顶部的SONY
D70摄像头转过去拉近拍摄。还有一组是检测老师在讲台上来回运动的,摄像头跟着来回拍摄。程序依赖背景减除,对环境干扰很敏感,各种参数调来调去蛮头疼的。&br&
用在了首都师范大学附中,期间合作方采购了国产的仿造D70摄像头,各种不好用,各种坑。&br&&br&&br&4:监控室查岗(项目附属品)&br&
做了一个武警招待所的监控改造项目,说白了就是换摄像头,我哥接的项目,我一个人在那前后安装了40多个摄像头,期间各种爬楼顶,钻吊顶,升降梯。电锤电钻冲击钻,用遍了各种电动工具,跑遍了北京西四环的建材市场。&br&
跟OpenCV有关的是,在他们监控室安装了一个摄像头,拍摄工作人员是否偷懒。用了OpenCV自带的人脸检测,如果一段时间内没有人脸,就存图,传到领导手机的网盘中。哈哈,是不是有点太坏了。&br&&br&&br&5:车牌识别(衣带渐宽终不悔,醉醉醉)&br&
弄了一套半成品的车牌识别程序,经过大概1年时间的优化,最后做的很实用,中间接了一些项目,施工啊,采购啊啥啥的,程序都是我们断断续续搞的。&br&
说下我们车牌识别的效果,OCR涉及的经典3步,定位、分割、识别。全是我们一行行改写后优化的,做到了准确度、运行速度的完全可控。包括识别过程中的样本收集和fastSVM的训练,都可控。&br&
用在了某个车库项目的出入口,控制轧机抬杆。规划的是想用到更多地方,算是技术储备&br&&br&&br&&br&6:车辆检测(功成无用)&br&
这是我和我哥几年来一直在钻研的技术难关,涉及到了决策树的机器学习,多核编程,在CV领域突破了很多难点。在理论和实用两方面都走到了足够靠前的地方。可惜技术门槛高,短期难找到实用的方向。真是有点像功成无用。&br&
封闭开发那一段蛮苦的,一个人住在郊区民房,天天对着程序,语言功能都退化了。后来公司成立了,经常是白天去项目现场各种施工安装,晚上脏兮兮的回到公司接着跟我哥编程序,往往都是赶着地铁或者公交末班车肥家。&br&
这段时期提高蛮大的,功力增长很多,虽然后来分开了,也不做这个行业了,但是还是给我带来很多积极的影响。技术方面来说,有些难点是硬着头皮死磕出来的,有些问题是窗户纸一样,时间磨出来了,一捅就破。&br&&br&&br&&br&&br&有些项目虽然没有挣到钱,欣慰的是做的东西都用上了,这对技术人员也算是种鼓舞吧。做的技术再好就怕闭门造车,没人和你分享也是很失落的。你看google他们家,头天晚上把搜索框的宽度拓开了1个像素,第二天保准是各大科技新闻的头条,这给人的自信心就是爆棚的。这也是技术人员的面壁图破壁,工程师都在等待他们的破壁人。。。
OpenCV做过一堆东西,乱七八糟的,本科快毕业那会儿,表哥回国到中科院当教授,我们一起做了几个项目,后来我们都辞职了,在一起创业,干了3年,大大小小做过一堆项目。经过千难万险,我们最后分开了。。。哈哈哈-----------------V.V--…
OpenCV优点把图像处理基础工具打包,老手方便,新人上手快,是一套好工具,图像处理的算法优化的不错,又能和Intel的IPP结合,调用多核CPU优势。但是它就是个好工具而已。&br&&br&高层的应用就和图像处理没啥关系了,就拿基于决策树的机器学习实现的车辆检测来说,各种算法、分类器、feature都仅是借用了些图像处理的工具,实现了高层的、自定义的各种算法。这种高层的本来就是各家各有所长,OpenCV只做好上游基本功好了。自带的Har-trainingcascade也只不过是抛砖引玉,提供了个可行性验证,离实用、好用差了十万八千里呢。
OpenCV优点把图像处理基础工具打包,老手方便,新人上手快,是一套好工具,图像处理的算法优化的不错,又能和Intel的IPP结合,调用多核CPU优势。但是它就是个好工具而已。高层的应用就和图像处理没啥关系了,就拿基于决策树的机器学习实现的车辆检测来说,…
题主做工程还是写paper?识别场景是否单纯?&br&paper的话:怎么炫怎么写吧。。。其实跟踪和图像处理的关系不大了,单纯的场景是个良好的实验室环境&br&工程的话:建议从工程角度解决。比如做车辆检测,为了增加图像中车的帧数,就想方设法降低摄像头的安装高度和倾角。硬骨头就绕开吧
题主做工程还是写paper?识别场景是否单纯?paper的话:怎么炫怎么写吧。。。其实跟踪和图像处理的关系不大了,单纯的场景是个良好的实验室环境工程的话:建议从工程角度解决。比如做车辆检测,为了增加图像中车的帧数,就想方设法降低摄像头的安装高度和倾…
倒是不难,OCR问题类似车牌识别。&br&但是&br&题主&br&问下&br&1:人与人遮挡咋整&br&2:侧身导致识别面积小咋整&br&3:人在跑步时上下运动造成图像抖动咋整&br&4:识别的训练样本咋收集,过拟合欠拟合都头疼&br&&br&别以为我在和你抬杠,实际是&br&。。。&br&N年前我也遇到了类似项目,调研了一段放弃了。。。。为了解决诸多问题所耗费的精力在一个短期小项目上完全不值当。&br&后来我去做车牌识别和车辆检测了。。。哇哈哈
倒是不难,OCR问题类似车牌识别。但是题主问下1:人与人遮挡咋整2:侧身导致识别面积小咋整3:人在跑步时上下运动造成图像抖动咋整4:识别的训练样本咋收集,过拟合欠拟合都头疼别以为我在和你抬杠,实际是。。。N年前我也遇到了类似项目,调研了一段放弃了。。…
要有实际的项目着手,不要为了学而学。&br&OpenCV好处是把图像处理很多底层基础功能打包,可以专注于更高层的逻辑、业务算法方面了。所以对于没有图像学基础的童鞋也是个福音,我就是半路出家的。&br&&br&建议题主找找OpenCV实现的开源代码尝试读一读,或者CSDN上弄些简单的OpenCV实现的车牌识别工程。
要有实际的项目着手,不要为了学而学。OpenCV好处是把图像处理很多底层基础功能打包,可以专注于更高层的逻辑、业务算法方面了。所以对于没有图像学基础的童鞋也是个福音,我就是半路出家的。建议题主找找OpenCV实现的开源代码尝试读一读,或者CSDN上弄些简…
有一点一定要考虑,OpenCV的编译环境&br&&br&Qt优点:&br&初学上手快,跨平台,系统资源占用少,IDE清爽,信号槽易于理解。编译OpenCV有点麻烦&br&&br&MFC优点:&br&资源多,网上好找资源,遇到问题也容易解决,不想Qt那样死磕,毕竟用的人多。编译OpenCV方便,这个是很大加分项。&br&&br&原生界面都一样丑爆了。Qt更容易美化
有一点一定要考虑,OpenCV的编译环境Qt优点:初学上手快,跨平台,系统资源占用少,IDE清爽,信号槽易于理解。编译OpenCV有点麻烦MFC优点:资源多,网上好找资源,遇到问题也容易解决,不想Qt那样死磕,毕竟用的人多。编译OpenCV方便,这个是很大加分项。原…
关于数量如何设置,也可以理解为正负样本比例如何控制。首先明确一点,训练过程是增强分类器的功力,这就要求整个训练期间负样本不能动,不管总数还是内部的单个图片。以此为基础逐个stage去筛选过滤正样本。理论上是每个stage中,能区分60%以上的正样本即为合格。这被分对的60%正样本被丢弃,认错的40%连同新补充的正样本一起进入下一个stage。(反之筛选负样本同理)&br&&br&打个比方,有个电影叫《初恋50次》,但50次是同一个人。训练的50个stage(实际上不需要这么多stage)的正样本都不完全相同,上一任的经验几乎带不到下一任,所以有点像《搭讪50次》。&br&&br&参与训练的样本数量,提个建议仅供题主参考——正负样本数量相当。这也是我的经验,没有绝对的道理,但是想想会觉得很自然。&br&&br&具体多少数量没有的定论,不一定要达到数十万。&br&两个问题也请题主思认真考下,这会决定样本的收集和取舍&br&1:分类器需要适用于多大的场景?&br&2:如何考虑样本之间冗余问题?
关于数量如何设置,也可以理解为正负样本比例如何控制。首先明确一点,训练过程是增强分类器的功力,这就要求整个训练期间负样本不能动,不管总数还是内部的单个图片。以此为基础逐个stage去筛选过滤正样本。理论上是每个stage中,能区分60%以上的正样本即…
是时候拿出这张图了!&br&&img src=&/d5d2c758cfc91af4b4ff76_b.png& data-rawwidth=&984& data-rawheight=&738& class=&origin_image zh-lightbox-thumb& width=&984& data-original=&/d5d2c758cfc91af4b4ff76_r.png&&上海嘉定区一所小学&br&我和我的小鱼干都惊呆了
是时候拿出这张图了!上海嘉定区一所小学我和我的小鱼干都惊呆了
高能预警,完全没有干货!!!纯粹是一片游记&br&&br&08年在央视体育频道《人物》节目看到了释德建的介绍,觉得挺神奇的,比较感兴趣,上网找过很多关于释德建的文章和视频看。后来阴差阳错在14年9月去了一次郑州,索性就去少林寺看看释德建。&br&&br&先说结果吧,没见到他本人,到了嵩山禅院转了一圈,感受过那个气氛就觉得否见到本人已经无所谓了。&br&&br&&img src=&/3bb6ac79ed51f4ef61b59d_b.jpg& data-rawwidth=&720& data-rawheight=&1280& class=&origin_image zh-lightbox-thumb& width=&720& data-original=&/3bb6ac79ed51f4ef61b59d_r.jpg&&&img src=&/35f3c375e0effa4f0f8ac_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/35f3c375e0effa4f0f8ac_r.jpg&&三皇寨几乎就是少林寺最远、最高的地方了。在山下被导游和僧人合伙坑了100元,晕死&br&&img src=&/b4d46146edcfb2c99c0f8f_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/b4d46146edcfb2c99c0f8f_r.jpg&&上去要坐索道&br&&img src=&/d0b96c90e05d357d74082_b.jpg& data-rawwidth=&720& data-rawheight=&1280& class=&origin_image zh-lightbox-thumb& width=&720& data-original=&/d0b96c90e05d357d74082_r.jpg&&索道还挺高,上山遇到了韩国大妈旅游团,跟3个韩国大妈坐一个缆车,互相语言不通,她们也听不懂我蹩脚的英文,不过手舞足蹈的还能勉强交流。被她们热情感动了,大妈抱着我一起照相,哈哈哈。。。。跑题了&br&&br&&img src=&/d0d60bb5bb966ada4d7763_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/d0d60bb5bb966ada4d7763_r.jpg&&缆车到了山顶后,要走这样的栈道才能到三皇寨。当地人说走个来回要4个小时,当时已是下午,我赶时间走得急,穿着皮鞋2小时走了来回。&br&&br&&img src=&/5018eaa86bc_b.jpg& data-rawwidth=&720& data-rawheight=&1280& class=&origin_image zh-lightbox-thumb& width=&720& data-original=&/5018eaa86bc_r.jpg&&全是这样的栈道,有些地段比较陡峭。途中遇到了央视的摄制组,2男1女,扛着设备。简单聊了几句,他们在拍一套关于中国功夫的纪录片,没明说此行目的,估计是去找释德建。&br&&br&沿途我问过其他人,当地人都知道释德建,而来往的游客所知甚少,都是和我一样来观光爬山的。&br&&img src=&/b6706efe7adae30f770f081d_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/b6706efe7adae30f770f081d_r.jpg&&&img src=&/c6a98ea6acbba_b.jpg& data-rawwidth=&720& data-rawheight=&1280& class=&origin_image zh-lightbox-thumb& width=&720& data-original=&/c6a98ea6acbba_r.jpg&&沿途自然风光如此这般&br&&br&&img src=&/f92bab010a3138_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/f92bab010a3138_r.jpg&&最后终于走到头了,到了嵩山禅院&br&&img src=&/a693bbba1ce10dfbedf556_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/a693bbba1ce10dfbedf556_r.jpg&&&img src=&/39ea6cdefe3d64bc5e270ef_b.jpg& data-rawwidth=&720& data-rawheight=&1280& class=&origin_image zh-lightbox-thumb& width=&720& data-original=&/39ea6cdefe3d64bc5e270ef_r.jpg&&&img src=&/78b3c91e8b0c033c800da6cdfcd7816b_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/78b3c91e8b0c033c800da6cdfcd7816b_r.jpg&&&br&看门人说的闪烁其词,大意就是释德建比较忙,不是谁来了都能随便见,而且真的见到了就能解决问题吗,不如四处转转自己看看好了。&br&&br&&img src=&/a97cd79b07b35bdf9b75b86cdd6d4f9e_b.jpg& data-rawwidth=&960& data-rawheight=&1280& class=&origin_image zh-lightbox-thumb& width=&960& data-original=&/a97cd79b07b35bdf9b75b86cdd6d4f9e_r.jpg&&有个小商店,买了本书,作者为德建禅师的俗家弟子,写的干货不多,挺朴实的,我看了好几遍。&br&&br&遇见了一个食堂阿姨,一个打扫卫生的阿姨,聊了几句。她们说这里总有客人来住,对外开放,不过需要提前预约,申请通过以后,来着可以住上几个月。很多都是慕名而来的患者,希望在这里调养身心。&br&&br&结论嘛,不做评价了。也算是慕名而来,感受了山下的浮躁和山上的清净,反差是特别的大。
高能预警,完全没有干货!!!纯粹是一片游记08年在央视体育频道《人物》节目看到了释德建的介绍,觉得挺神奇的,比较感兴趣,上网找过很多关于释德建的文章和视频看。后来阴差阳错在14年9月去了一次郑州,索性就去少林寺看看释德建。先说结果吧,没见到他…
这块水比较深,而且方向很不明晰,学习曲线较长。&br&&br&建议参与到一个实际的项目中去,遇到什么学什么。我当年就是这么干的。误打误撞干了三年。虽然不是科班出身,但是学的东西够用,跟上了研发的需求。最后做的东西技术上很好,可惜产品方面比较糟,那是后话了。。。我现在准备学习产品经理知识
这块水比较深,而且方向很不明晰,学习曲线较长。建议参与到一个实际的项目中去,遇到什么学什么。我当年就是这么干的。误打误撞干了三年。虽然不是科班出身,但是学的东西够用,跟上了研发的需求。最后做的东西技术上很好,可惜产品方面比较糟,那是后话了…
绝对的前沿,但是水很深,研究生几乎也就是刚有些概念,做不出东西的,就算到了博士阶段,能做出东西从实验室脱产也小概率事件。幸运的话有机会给牛人打杂,实践中学些东西。
绝对的前沿,但是水很深,研究生几乎也就是刚有些概念,做不出东西的,就算到了博士阶段,能做出东西从实验室脱产也小概率事件。幸运的话有机会给牛人打杂,实践中学些东西。
我做过三年的图像处理和机器学习。&br&&br&图像处理只是手段,而机器学习是一套体系,目的产生可控的分类器,包含如何去采集样本,生成分类器,调整各种参数。&br&&br&举例我做过的车牌识别。&br&实际上是一套ocr技术,现在已经都烂大街了。&br&图像处理部分,收集到的图像数据做各种加工,以满足机器学习各个部分的需要。例如做单通道处理降低信息量,二值化去除干扰噪点,膨胀腐蚀打通联通域等等。属于“器”层面。&br&&br&机器学习部分,属于“术”层面了,拍摄了图像,用分类器去识别,实验室阶段要人工校对,对于漏识和误识,会有false positive和false nagitave两种情况,前者是没认出来,后者是认错了。这是两种完全不同的处理分支。对于完全由数据驱动的机器学习流程来说,不需要修改代码。而是将出现错误的样本手动调整到正确分类中,再讲调整后的样本集喂给训练程序,得到新的分类器。再去检验样本,如此反复迭代,提升分类器功力。
我做过三年的图像处理和机器学习。图像处理只是手段,而机器学习是一套体系,目的产生可控的分类器,包含如何去采集样本,生成分类器,调整各种参数。举例我做过的车牌识别。实际上是一套ocr技术,现在已经都烂大街了。图像处理部分,收集到的图像数据做各…
算法其次,殊途同归。我知道的有用决策树,向量机,神经网络都能实现。&br&&br&楼上有句话说的好,这个领域设计的方面太多,单拿出某个点,都能发好多paper了。&br&&br&在这说两方面吧&br&1要做通用识别算法还是专用识别算法?&br&由需求和技术现状决定。自己一定要想清楚&br&&br&2二类问题还是多类问题?&br&车牌识别属于OCR技术,说白了在一大堆字母中认出是什么。一般用svm向量机比较好,向量机天然适合多选一,简单粗暴的说,样本种类多了,就容易分类,种类少了反倒分不出来,因为区分度是由样本决定的,且只能训练一次,不能将分类器迭代。&br&&br&但是,如果做车辆检测,这就是二选一的是非问题。给计算机一幅图,让它认出是不是车。看似是二选一,其实比OCR的多选一难度大了不止一个数量级,完全不能用向量机。这时候就要用决策树或者神经网络。通过多次迭代,将分类器的功力逐级提升,让车与非车两类样本的区分度越来越明显。
算法其次,殊途同归。我知道的有用决策树,向量机,神经网络都能实现。楼上有句话说的好,这个领域设计的方面太多,单拿出某个点,都能发好多paper了。在这说两方面吧1要做通用识别算法还是专用识别算法?由需求和技术现状决定。自己一定要想清楚2二类问题…
计算机就是个小孩子,教它学东西。&br&&br&教什么?定义了识别模式,是基于决策树的?向量机的?还是神经网络的?&br&怎么教?分为训练和识别两个过程,训练时用指定样本去生成分类器,反过来在识别过程中用一套全新的样本去检验分类器。当发现效果有偏差时,在下一次迭代中对训练样本进行调整。&br&&br&两个关键问题&br&1所选样本不能太差,也不能太好。过拟合和欠拟合都很头疼。&br&&br&2工作分配比重,以下四件事各占四分之一,理论分析,编码实现,参数调整,样本筛选。
计算机就是个小孩子,教它学东西。教什么?定义了识别模式,是基于决策树的?向量机的?还是神经网络的?怎么教?分为训练和识别两个过程,训练时用指定样本去生成分类器,反过来在识别过程中用一套全新的样本去检验分类器。当发现效果有偏差时,在下一次迭…
大刘的作品都很硬&br&因为,大刘不善于写软的。。。
大刘的作品都很硬因为,大刘不善于写软的。。。
绝对让人眼前一亮。&br&当时看完了这两部之后的感觉是,相比之下,大多数中国科幻都算是靡靡之音,太不来劲了。
绝对让人眼前一亮。当时看完了这两部之后的感觉是,相比之下,大多数中国科幻都算是靡靡之音,太不来劲了。
《三体》和《球状闪电》我都看过,都很好看,作为10多年的科幻迷,我感觉在中国,科幻绝对是小众。&br&&br&1:
科幻的门槛可以很高,罗伯特索耶、卡尔萨根都参与过科幻创作。也可以很低,比如《银河系漫游指南》,通篇几乎没有任何科学原理,一个完全架空的世界观,不需要任何过多的解释,随手抓起来就能阅读。作为号称“科幻圣经”的这套书,散发出了强烈的英式黑色幽默。但是国人不太吃黑色幽默这一套,完全不接地气。&br&2:
中国人更喜欢武侠,例如金庸小说里展现的那些江湖义气、人情世故,深深融入了每个人的骨头和血液中,阅读时从各种处事哲学、言语机锋中得到快感,甚至,将来可能用得上。相比来讲对于美国文学,一个太空牛仔和一个西部牛仔,本质上没有区别,代入感就很强。但是中国科幻文学的根基太浅,借鉴的东西又非常少,好处在于没有包袱可以随意发挥。坏处在于凭空生造出的东西,特别的弱势。在非受众圈子中,无异于“怪力乱神”。 &br&3:
《三体》绝对很棒,但是缺点也特别明显。大刘的故事性、文学性、人物塑造都不太出色。而且第三部很出彩,相比之下前两部作了很多铺垫,略显拖沓。很多科幻圈外的人奔着《三体》去,想打开科幻的好奇心。结果发现故事、文学、人物都不来劲,又没有耐心看到第三部的各种硬科幻点子大爆发,就无奈的放弃了。&br&4:
作为幻想文学,拼各种脑洞的角度来说,中国科幻干不过玄幻,干不过奇幻。加上市场需求导致,很多写手专攻玄幻奇幻。科幻只有大刘带领的四大天王在扛着,木有看到后继蓬勃的生命力来继承,感觉没后劲。&br&&br&最后我想说,汪峰那么多好歌,《回忆之前忘记之后》就很好听,为啥单单火了《春天里》。。。。
《三体》和《球状闪电》我都看过,都很好看,作为10多年的科幻迷,我感觉在中国,科幻绝对是小众。1: 科幻的门槛可以很高,罗伯特索耶、卡尔萨根都参与过科幻创作。也可以很低,比如《银河系漫游指南》,通篇几乎没有任何科学原理,一个完全架空的世界观,…
已有帐号?
无法登录?
社交帐号登录

我要回帖

更多关于 opencv3 mfc 显示图片 的文章

 

随机推荐