Tag: 图像处理

如何从图像中读取条形码

我正在寻找关于如何从图像中读取EAN-13条形码的图书馆,技术或建议(包括ISBN和ISSN编码)。 图像将来自手机或网络摄像头,因此分辨率可能非常差,并且没有很好地对齐。 我特别感兴趣的是可以在ruby轨道上使用的东西,但欢迎使用其他语言的答案。 首选开源解决方案。 迄今领先的解决方案: ZBar (以前称为Zebra -h / t @bgbg,@ Natim) – 在C中实现,带有Python,Perl和C ++接口 ZXing (h / t @codr) – 用Java(J2SE和Android)实现,其他模块/端口处于不同的开发状态(JavaME,C#,C ++,JRuby,RIM,iPhone / Objective C)

C中边缘检测的卷积

我一直在尝试使用2D卷积来进行有关图像处理的项目。 由于我只需要逐个像素地进行卷积,我决定使用以下代码(我知道它很丑陋并且没有优化。)使用维基百科的数学公式: output[1][1] = b[0][0]*mask_0[2][2] + b[0][1]*mask_0[2][1] + b[0][2]*mask_0[2][0] + b[1][0]*mask_0[1][2] + b[1][1]*mask_0[1][1] + b[1][2]*mask_0[1][0] + b[2][0]*mask_0[0][2] + b[2][1]*mask_0[0][1] + b[2][2]*mask_0[0][0] 我正在使用Kirsch边缘检测。 不幸的是,在仅使用一个蒙版进行卷积后,得到的图像是: 卷积之后 在Convolution之前

OpenCV根据像素值resize和裁剪图像

#include “iostream” #include “cv.h” #include “highgui.h” #include “cvaux.h” #include “cxmisc.h” #include “math.h” using namespace cv; using namespace std; int main(){ int height, width, x, y, i, minX, minY, maxX, maxY; char imgFileName[100]; IplImage *origImage = cvLoadImage(“BaybayinMark/b9.jpg”, -1); height = origImage->height; width = origImage->width; IplImage *grayImage = cvCreateImage(cvSize(width, height), 8, 1); IplImage *binImage = cvCreateImage(cvSize(width, height), […]

默认情况下Gdk-Pixbuf(Gtk-Image?)支持哪些图像格式?

我知道Gdk-Pixbuf支持png和jpg,但我无法在互联网上的任何地方找到所有完全(或部分)支持的图像格式的确切列表 。 这是我当前项目所必需的,因为我需要检查目录中每个文件的扩展名,并确定gdk-pixbuf是否支持它。 有帮助吗?

访问cvCreateMatND的元素

我是OpenCV的新手,我正在尝试创建一个n维数组并使用CvMatND访问每个元素。 我可以通过数据[i * step + j * nchannels + 0]访问2D矩阵,如何访问由 int size[] = { 12, 12, 12 }; CvMatND* matB = cvCreateMatND(3, size, CV_8U); int *Data = matA->data.i; 谢谢

如何测量图像的环境光线水平?

我正在寻找一个使用相机来测量拍摄图像时存在的光量的应用程序。 一些条件行为将基于存在多少光线而发生 – 即如果看起来像是黑暗的话,则显示消息“看起来像睡前”。 据我所知,由于曝光和类似的事情,这将是一个非常差的衡量,但它不需要超级准确。 我没有图像处理经验,所以我甚至不知道要问什么,或者什么是可行的。 这可能吗? 做这样的事情有没有C库?

将OpenCV阈值与Kinect图像一起使用

我正在尝试使用OpenCV Threshold和OpenCV VideoCapture模块检索的depthImage,但是我收到以下错误: OpenCV错误:未知函数中的错误参数,文件PATHTOOPENCV \ opencv \ modules \ core \ src \ matrix.cpp第646行 我的代码如下: #include “opencv2/opencv.hpp” #include “opencv2/imgproc/imgproc.hpp” #include “opencv2/highgui/highgui.hpp” #include “opencv2/gpu/gpu.hpp” cv::VideoCapture kinect; cv::Mat rgbMap; cv::Mat dispMap; bool newFrame; void setup() { kinect.open(CV_CAP_OPENNI); newFrame = false; } void update() { if(kinect.grab()) { kinect.retrieve( rgbMap, CV_CAP_OPENNI_BGR_IMAGE); kinect.retrieve( dispMap, CV_CAP_OPENNI_DISPARITY_MAP ); newFrame = true; } […]

使用NDK在Android中进行实时图像处理

使用Android(2.3.3)手机,我可以使用相机通过onPreviewFrame(byte[] data, Camera camera)方法检索预览,以获取YUV图像。 对于某些图像处理,我需要将此数据转换为RGB图像并在设备上显示。 使用基本的java / android方法,运行速度低于5 fps …… 现在,使用NDK,我想加快速度。 问题是:如何将YUV数组转换为C中的RGB数组? 有没有办法在本机代码中显示它(也许使用OpenGL?)? 实时应该是可能的(Qualcomm AR演示向我们展示了这一点)。 我无法使用setTargetDisplay并在其上添加叠加层! 我知道Java,最近开始使用Android SDK并且没有C的经验

用于从RGB值数组中切割平面(就地)的算法

我有一个平坦的字节RGB值数组,它们是R1 G1 B1 R2 G2 B2 R3 G3 B3 … Rn Gn Bn 。 所以我的数据看起来像: char imageData[WIDTH * HEIGHT * 3]; 但我想将WIDTH * HEIGHT数组传递给现有的C库,该C库需要这个数据的单个平面。 这将只是R值(或只是G,或只是B)的序列。 分配新数组并复制数据(duh)很容易。 但是图像非常大。 如果它不是一个C库,而是采用某种迭代接口来精细化“切片”遍历,那就太棒了。 但是我无法编辑我正在调用的代码……它需要一个指向顺序内存块的普通旧指针。 但是我有对这个数组的写访问权限。 创建一个将其分类为彩色平面的例程是可行的。 我还需要一个可以反转的反向转换,但根据定义,将它分类为平面的相同方法可以应用于取消它。 我能够(到位)将这个arrays转换为R1 R2 R3 … Rn G1 G2 G3 … Gn B1 B2 B3 … Bn然后再返回? 任何非天真的算法?

如何/为什么imagedata存储为char – OpenCV

我有点困惑。 我刚刚开始使用OpenCV,它的图像数据由char指针指向。 考虑到实际数据本身可以是任意数量的数据类型,例如uint,float,double,我无法弄清楚它是如何工作的。 据我所知,指针必须与它所代表的指针的类型相同。 值得注意的是openCV是一个C库,我的背景是C ++,所以我不知道如何在C中解决这些需要变量类型的问题。 例如,从学习OpenCV中获取的以下代码说明了我的困惑: void saturate_sv( IplImage* img ) { for( int y=0; yheight; y++ ) { uchar* ptr = (uchar*) ( img->imageData + y * img->widthStep ); for( int x=0; xwidth; x++ ) { ptr[3*x+1] = 255; ptr[3*x+2] = 255; } } } 这样可行,但是当我尝试对IPL_DEPTH_64F类型的iplImage进行操作并使用ptr [3 * x + 1] = 1时结果不正确。 […]