| 发表于:2008-01-03 09:57:02 楼主 |
vb做图像处理方面的程序确实很困难啊! 在网上搜索~~说实话找到的不是被封的严严实实的dll,就是那些不健全的处理代码! 用getpixel和setpixel太慢,可偏偏网上和出版的书上基本都是用它们!这些作者,都是混!用那么慢的处理来介绍算法,~~~~不实用啊! 搜到vb图像处理,(一)像素的获取和输出,作者确实费了一片心思,我是百般佩服!拿来他的代码,运行,没错,但与预期结果不一样,苦思冥想啊,终于解决(picture控件的autoredraw设为ture 否则获取的图像不是picture控件中的图像,scalemode=3 pixel像素模式'否则程序速度很慢!),自己参照他的代码编写了一个类~~测试,正常! 再小波变换算法研究了两个星期,终于有些头绪,参照vc代码和算法公式,先写了个测试的,没想到程序没错,结果不对!哎!继续改,想,昨夜一晚似睡非睡~~知道了,我写的代码应该彻底推翻,那个图像处理的类,本身就有缺陷!用getdibits确实获得了像素值,对于一些什么反像,插值……看不出破绽,但这个函数返回的像素值的扫描顺序有问题,获得一个三维数组picdata(i,inputwid,inputhei) 经下面的代码: for j = 0 to inputhei for k = 0 to inputwid \ 4 picdata(0, k, j) = cbyte(0) picdata(1, k, j) = cbyte(0) picdata(2, k, j) = cbyte(0) next next 得到的图像是 应该得到类似下面的图像: 可能是getdibits函数的读取图像的顺序不一样。上面的图像是我修改程序后得到的,可是大家也看得出黑色部分并不齐整,实在是想不出什么好办法了!只有全部否决重来了!下次试试用指针——safearray! 也不知道自己对getdibits的评价对不对,希望得到大家的指点谢谢! |
|
| 该帖包含附件: |
|
|