opencv使用

单个图片选择ROI区域

测试语法 :程序路径 .exe文件 图片名。
例如
D:\CMakeFiles\cpp\Release>cpp-example-image.exe IMG_20160813_074934.jpg

这个例子有个问题,cvNamedWindow(“Box Example”);
这样默认的窗口大小固定,可以选择ROI区域;但若改为cvNamedWindow(“Box Example”,0),不能通过鼠标选取区域。对于图片size超过默认的窗口大小情况,图片显示不完全。

图片名即是 IplImage* image_input = cvLoadImage(argv[1]);
中的命令行参数

对于图片分辨率高于窗体最大显示的问题,不好解决。可以换个思路:如果选择图片的ROI是通过一个模板图片B来确定大小,而这个图片B是基于原始图片A先通过其他截图软件得到的,那么就好办了。这里解决了单个图片裁剪的问题,如果有很多图片如图片组A[n],可以将单个图片生成exe,然后通过批处理来实现批量图片裁剪。

echo off 
d:,
cd D:\CMakeFiles\cpp\Release
for /f "delims=" %%i in ('dir /b  D:\CMakeFiles\cpp\Release\*.jpg') DO cpp-example-image.exe %%i D:\CMakeFiles\cpp\Release\picture_test\mask.jpg

注意,这个批处理成中的cpp-example-image.exe 的dll必须在D:\CMakeFiles\cpp\Release这个文件夹下,否则出现问题

OpenCV Error: Assertion failed (ssize.area() > 0) in cv::resize, file C:\builds\2_4_PackSlave-win32-vc12shared\opencv\modules\imgproc\src\imgwarp.cpp, line 1968

可以将这个改编为1个功能模块,用来选择ROI区域。
有个应用设这样的:你有一组图片(比如100张),这个图片中有1个区域B是在每个图片固定的(比如 照相的图,相机不动,人站在固定位置,需要提取每个人图像),这样可以通过这个模块批量提取区域B。

前提:图片区域固定。

由此,引申一个场景。有2个静止的摄像头A与B,同时监控1个区域,摄像头A与B都只能看到这个区域的部分。有个人在A摄像头的图像为a[n],在B摄像头的图像b[n],需要提取a[n]与b[n]中人身照的部分,然后实现图像拼接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值