求vc 图像处理源代码代码

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&11:32 提问
求发图像处理源代码,源码
在书里面看了好多简单图像处理的源代码,比如《C语言课程设计案例精编》,但代码很多,想自己动手调试一下,但自己打的也容易出错,所以,各位,有没有C语言关填充填充于图像处理的源代比如平移,翻转,等等一些简单的功能
按赞数排序
Google/Baidu 下,还有更多的源代码可供参考
推荐看看opencv
3142关注|623收录
2219关注|261收录
2458关注|1159收录
其他相似问题求教一个图像处理问题 - LabVIEW论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
求教一个图像处理问题
等待验证会员
18:21:08  
人工在物体经过时做了些记号——红和蓝线条,它的数量和位置会变化。相机在物体经过时拍摄,传给labview处理,怎样获得这些红蓝线条的数目?附一张图片如下:
拍照 - 副本.jpg (70.37 KB, 下载次数: 1)
18:20 上传
01:33:09  
这个可以从中间画一条横线,取这条横线上的像素出来当一维数组,然后逐个分析边界就能得出来了。。
助理工程师
16:43:10  
看你这照片 本身自己就带颜色,坑
17:23:37  
对的,这图像成像很差,而且干扰很多。。。就算弄出来,也是很不稳定!
Powered by如题,想做一个图像处理的app(ios),但是核心算法只有matlab代码。如果要改成C/C++的话估计很困难,一来自己不能完全理解作者的代码,二来C/C++,配合Opencv处理图像比matlab麻烦很多,求教有这方面经验的小伙伴,怎么办呢?谢谢!
楼主,能发我一份你的matlab代码吗?Yolanda_zss
已有帐号?
无法登录?
社交帐号登录先罗列一下工具类中提供的方法:
根据原始view和毛玻璃样式,获取模糊视图,并自动作为原view的subview(如果不需要作为子视图,自行调用removeFromSuperview)
+ (UIView *)getBlurEffectViewWithOriginalView:(UIView *)originalView style:(ImageHelperBlurEffectStyle)
根据原始图像和毛玻璃样式,获取新图像
+ (UIImage *)getBlurEffectImageWithOriginalImage:(UIImage *)originalImage style:(ImageHelperBlurEffectStyle)
根据原始图像,等比缩放系数,得到新图像
+ (UIImage *)getImageWithOriginalImage:(UIImage *)originalImage scale:(CGFloat)
根据原始图像,等比缩放最大尺寸,得到新图像
+ (UIImage *)getImageWithOriginalImage:(UIImage *)originalImage scaleMaxSize:(CGSize)scaleMaxS
根据原始图像,等比缩放最大尺寸,得到新尺寸
+ (CGSize)getImageSizeWithOriginalImage:(UIImage *)originalImage scaleMaxSize:(CGSize)scaleMaxS
根据原始图像,完全填充尺寸,得到新图像
+ (UIImage *)getImageWithOriginalImage:(UIImage *)originalImage fillSize:(CGSize)fillS
根据原始图像,裁剪区域,得到新图像
+ (UIImage *)getImageWithOriginalImage:(UIImage *)originalImage cutFrame:(CGRect)cutF
根据颜色,得到单位尺寸的纯色新图像
+ (UIImage *)getImageWithColor:(UIColor *)
根据view,得到快照
+ (UIImage *)getSnapshotWithView:(UIView *)
全屏截图,但不包括状态栏
+ (UIImage *)getFullScreenS
1.获取毛玻璃效果(高斯模糊)图像
在iOS8以后,提供了类UIBlurEffect、UIVisualEffectView,可以方便的生成高斯模糊的视图,然后只需要作为目标视图的subview即可看到效果。在iOS7上需要自行实现,不过苹果在WWDC 2013上提供了一个UIImage+ImageEffects的分类,可以生成高斯模糊的图像。将分类加入项目Categories目录后,在ImageHelper中引用。因为UIBlurEffectStyle是在iOS8以后出现的,所以自定义了一个与其对应的枚举类型ImageHelperBlurEffectStyle,以便在iOS7中也可以正常使用。实现代码如下:
+ (UIView *)getBlurEffectViewWithOriginalView:(UIView *)originalView style:(ImageHelperBlurEffectStyle)style
if (DeviceIOSVersionAbove(8)) {
UIBlurEffectStyle blurS
switch (style) {
case ImageHelperBlurEffectStyleExtraLight: {
blurStyle = UIBlurEffectStyleExtraL
case ImageHelperBlurEffectStyleLight: {
blurStyle = UIBlurEffectStyleL
case ImageHelperBlurEffectStyleDark: {
blurStyle = UIBlurEffectStyleD
UIBlurEffect *effect = [UIBlurEffect effectWithStyle:blurStyle];
UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:effect];
effectView.frame = originalView.
[originalView addSubview:effectView];
return effectV
UIImage *originalImage = [self getSnapshotWithView:originalView];
UIImage *blurImage = [self getBlurEffectImageWithOriginalImage:originalImage style:style];
UIImageView *effectView = [[UIImageView alloc] initWithFrame:originalView.bounds];
[effectView setImage:blurImage];
[originalView addSubview:effectView];
return effectV
+ (UIImage *)getBlurEffectImageWithOriginalImage:(UIImage *)originalImage style:(ImageHelperBlurEffectStyle)style
UIImage *newI
switch (style) {
case ImageHelperBlurEffectStyleExtraLight: {
newImage = [originalImage applyExtraLightEffect];
case ImageHelperBlurEffectStyleLight: {
newImage = [originalImage applyLightEffect];
case ImageHelperBlurEffectStyleDark: {
newImage = [originalImage applyDarkEffect];
return newI
2.提供了将图像等比例缩放的系列方法,以及裁剪的方法。基本思路就是在当前图像上下文中,指定绘制尺寸(即位图的尺寸),然后将相应图像绘制到指定位置,然后生成最终图像。例如裁剪图像示例代码:
+ (UIImage *)getImageWithOriginalImage:(UIImage *)originalImage cutFrame:(CGRect)cutFrame
CGSize newSize = cutFrame.
UIGraphicsBeginImageContext(newSize);
[originalImage drawInRect:CGRectMake(-cutFrame.origin.x, -cutFrame.origin.y, cutFrame.size.width, cutFrame.size.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newI
3.截屏方法
需要用到方法:
UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale)。第一个参数仍然是指定图像上下文绘制尺寸;第二个参数指定是否不透明;第三个为等比例缩放系数,如果为0.0,表示与设备主屏幕的系数一致。
CALayer的renderInContext:(CGContextRef)ctx方法,将图层全部渲染到某个上下文中,建议为当前图像上下文。最后得到图像。
+ (UIImage *)getSnapshotWithView:(UIView *)view
UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 0.0);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newI
+ (UIImage *)getFullScreenSnapshot
return [self getSnapshotWithView:[UIApplication sharedApplication].keyWindow];
全屏截图时候,不包括状态栏,因为状态栏不在应用的window上,无法直接获取。但是可以通过私有Api拿到系统截屏图像,在此不展开探究。
UIImage *icon = LOADIMAGE(AppIcon);
UIImage *testI
testImg = [ImageHelper getImageWithOriginalImage:icon scale:2];
LOG(@"%@", testImg);
testImg = [ImageHelper getImageWithOriginalImage:icon scaleMaxSize:CGSizeMake(100, 90)];
LOG(@"%@", testImg);
testImg = [ImageHelper getImageWithOriginalImage:icon fillSize:CGSizeMake(100, 90)];
LOG(@"%@", testImg);
testImg = [ImageHelper getImageWithOriginalImage:icon cutFrame:CGRectMake(10, 10, 50, 50)];
LOG(@"%@", testImg);
testImg = [ImageHelper getImageWithColor:COLOR(255, 120, 100)];
LOG(@"%@", testImg);
testImg = [ImageHelper getSnapshotWithView:self.view];
LOG(@"%@", testImg);
testImg = [ImageHelper getFullScreenSnapShot];
LOG(@"%@", testImg);
testImg = [ImageHelper getBlurEffectImageWithOriginalImage:testImg style:ImageHelperBlurEffectStyleDark];
LOG(@"%@", testImg);
UIView *coverView = [ImageHelper getBlurEffectViewWithOriginalView:[UIApplication sharedApplication].keyWindow style:ImageHelperBlurEffectStyleDark];
2016-09-13 19:05:11.995 base[33087:2301853] &UIImage: 0x7ffaf97e8d00&, {120, 120}
2016-09-13 19:05:11.997 base[33087:2301853] &UIImage: 0x7ffaf97e9610&, {90, 90}
2016-09-13 19:05:11.999 base[33087:2301853] &UIImage: 0x7ffaf950a330&, {100, 90}
2016-09-13 19:05:12.001 base[33087:2301853] &UIImage: 0x7ffaf9463630&, {50, 50}
2016-09-13 19:05:12.002 base[33087:2301853] &UIImage: 0x7ffaf950a330&, {1, 1}
2016-09-13 19:05:12.007 base[33087:2301853] &UIImage: 0x7ffaf96004b0&, {375, 667}
2016-09-13 19:05:12.013 base[33087:2301853] &UIImage: 0x7ffaf950a330&, {375, 667}
2016-09-13 19:05:12.040 base[33087:2301853] &UIImage: 0x7ffaf9506f30&, {375, 667}
1.可以单步调试代码,查看testImg图像内容:
2.[ImageHelper getSnapshotWithView:self.view];这行代码中的self.view生成快照后,尺寸为{375, 667},但如果在viewDidLoad方法中加入代码:
self.edgesForExtendedLayout = UIRectEdgeN
重新输出的尺寸为{375, 603},因为edgesForExtendedLayout属性默认为UIRectEdgeAll,这在处理UI布局时候需要注意。后续记录的UIViewContoller父类也会提到。
base项目已更新::ALongWay/base.git
======================================
1.修改了UIGraphicsBeginImageContext为UIGraphicsBeginImageContextWithOptions方法,设置不透明为NO,scale系数为0.0。即处理后为高质量的图像,包括原图alpha值。截屏方法区别在于没有包括透明度值
2.图像裁剪方法更新:
+ (UIImage *)getImageWithOriginalImage:(UIImage *)originalImage cutFrame:(CGRect)cutFrame
CGImageRef cgimageRef = CGImageCreateWithImageInRect(originalImage.CGImage, cutFrame);
UIImage *newImage = [UIImage imageWithCGImage:cgimageRef];
CGImageRelease(cgimageRef);
return newI
裁剪区域可以任意设定。之前的方法,当偏移区域加上裁剪区域没有覆盖原图全部区域时候,图像在上下文中绘制会失败。
3.增加了图像合并方法,可以合并任意数量的图像
+ (UIImage *)getImageMergedWithOriginalImageArray:(NSArray&ImageHelperMergeImage *& *)imageArray
if (!imageArray
|| imageArray.count == 0) {
ImageHelperMergeImage *firstMergeImage = [imageArray firstObject];
//将第一张图作为背景放置
CGRect firstMergeRect = firstMergeImage.mergeR
firstMergeRect.origin = CGPointZ
firstMergeImage.mergeRect = firstMergeR
UIGraphicsBeginImageContextWithOptions(firstMergeImage.mergeRect.size, NO, 0.0);
for (ImageHelperMergeImage *mergeImage in imageArray) {
[mergeImage.image drawInRect:mergeImage.mergeRect];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newI
定义了一个合并图像的对象ImageHelperMergeImage,有一个UIImage属性存储图像,和CGRect属性储存合并的位置。
===================================
之前的全屏截图方法,受限于状态栏无法获取,导致截图无状态栏。
后来,打印了一下UIApplication的全部私有变量和方法,找到一个名为&_statusBar&的私有变量,类型名为UIStatusBar。
猜测为UIView的子类,使用getSnapshotWithView:方法,得到了一个(375,20)的黑条,将方法中代码:
UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 0.0);
第二个参数修改为NO,得到了想要的状态栏截图:
代码如下:
+ (UIImage *)getFullScreenSnapshotWithStatusBar
[StringHelper printAllPrivateVariablesAndMethodsWithClassName:@"UIApplication"];
UIApplication *app = [UIApplication sharedApplication];
//私有变量得到状态栏
UIView *statusBar = [app valueForKeyPath:@"statusBar"];
UIImage *statusBarImage = [self getSnapshotWithView:statusBar];
UIImage *bgImage = [self getFullScreenSnapshotWithoutStatusBar];
ImageHelperMergeImage *mergeImage1 = [ImageHelperMergeImage getImageHelperMergeImageWithImage:bgImage];
ImageHelperMergeImage *mergeImage2 = [ImageHelperMergeImage getImageHelperMergeImageWithImage:statusBarImage];
UIImage *newImage = [self getImageMergedWithOriginalImageArray:@[mergeImage1, mergeImage2]];
return newI
base项目已更新::ALongWay/base.git
阅读(...) 评论()

我要回帖

更多关于 vc 图像处理源代码 的文章

 

随机推荐