- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我有这个问题。我有一个IplImage,我想将其压缩为JPEG并对其进行处理。我使用libjpeg8b。代码进入jpeg_start_compress()函数时退出,错误为“伪输入色彩空间”。这是我的代码。
#include "highgui.h"
#include <stdio.h>
#include "jpeglib.h"
#include "cv.h"
#include <iostream>
#include <fstream>
using namespace std;
using namespace cv;
#pragma comment(lib, "jpeglib.lib")
bool ipl2jpeg(IplImage *frame, unsigned char **outbuffer, unsigned long*outlen)
{
IplImage *img = new IplImage;
memcpy(img,frame,frame->nSize);
unsigned char *outdata = (uchar *) img->imageData;
struct jpeg_compress_struct cinfo = {0};
struct jpeg_error_mgr jerr;
JSAMPROW row_ptr[1];
int row_stride;
*outbuffer = NULL;
*outlen = 0;
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_compress(&cinfo);
jpeg_mem_dest(&cinfo, outbuffer, outlen);
cinfo.image_width = frame->width;
cinfo.image_height = frame->height;
cinfo.input_components = frame->nChannels;
cinfo.in_color_space = JCS_RGB;
jpeg_set_defaults(&cinfo);
jpeg_start_compress(&cinfo, TRUE);
system("pause");
row_stride = frame->width * frame->nChannels;
while (cinfo.next_scanline < cinfo.image_height)
{
row_ptr[0] = &outdata[cinfo.next_scanline * row_stride];
jpeg_write_scanlines(&cinfo, row_ptr, 1);
}
jpeg_finish_compress(&cinfo);
jpeg_destroy_compress(&cinfo);
return true;
}
int main()
{
ofstream fout("text.txt");
unsigned char **buf;
buf = new unsigned char* [120];
for(int i=0;i<500;i++)
{
buf[i] = new unsigned char[120];
}
for(int i=0;i< 120;i++)
{
for(int j=0;j<120;j++)
{
buf[i][j] = 0;
}
}
unsigned long *len = new unsigned long;
*len = 120*120;
Ptr<IplImage> img = cvLoadImage("test.jpg",CV_LOAD_IMAGE_GRAYSCALE);
ipl2jpeg(img,buf,len);
for(int i=0;i< 120;i++)
{
for(int j=0;j<120;j++)
{
fout<<buf[i][j]<<endl;
}
}
return 0;
}
最佳答案
我以前从未使用过libjpeg,但看起来您正在混合色彩空间。您将图像加载为灰度(CV_LOAD_IMAGE_GRAYSCALE),但告诉libjpeg它是RGB图像(JCS_RGB)。您是否尝试过换线
cinfo.in_color_space = JCS_RGB;
cinfo.in_color_space = JCS_GRAYSCALE;
关于opencv - 在OpenCV中使用libjpeg将IplImage压缩为JPEG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5448957/
是否可以使用 OpenCv (JavaCv) 将图像放入图像中。例如,我有一张 1000x1000 的图像和一张 100x100 的图像。在 600x600 的位置,我想将较小的图像放在较大的图像中。
我必须在内存中保存预定义数量的图像。我创建了一个像这样的数组: int nb_frame_decalage=10; IplImage** accumulateur_image; CvCapture*
我想使用下面的代码保存一个 IplImage(不是 IplImage*) IplImage ipl_from_mat((IplImage)imgDisparity8U); cvNamedWindow(
我需要将 8 位 IplImage 转换为 32 位 IplImage。使用来自整个网络的文档,我尝试了以下操作: // general code img2 = cvCreateImage(cvSiz
当我尝试使用 cvCopy 将一个由 3 个 channel 组成的 IplImage 复制到一个具有 4 个 channel 的 IplImage(我稍后需要额外的 channel )时,我得到的只
我有一个 8 位的 IplImage,我想将它转换为 24 位的 IplImage。我该怎么做? 最佳答案 假设您的灰度图像位于名为 image 的变量中 - IplImage *rgbimage =
我想知道在 opencv 中裁剪 IplImage 的最有效方法是什么。我目前正在执行以下操作,但它似乎太复杂了,我确信有更好的方法。 // set ROI on original image
该代码用于8位数据,以生成灰度IplImage。 IplImage* img_gray_resize = NULL; img_gray_resize = cvCreateImage(c
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 8 年前。 Improve t
我有一个变量 char* ImgMem,它包含所需图像的图像内存(三个 channel /RAW 16),我想将它分成三个并将每个在单 channel 的 IplImage 中:一个用于 R,一个用于
是否有一种简单且成本低廉的方法可以沿 y 轴翻转 IplImage?我正在使用高帧率。 最佳答案 cvFlip(参见 Operation On Arrays )可以原地翻转。支持水平、垂直和组合翻转。
如何使用 OpenCV 获得最清晰的 iplimage?当没有训练图像进行比较时。 例如,有一个移动手的网络摄像头输入。但是当我播放这个视频时,我得到了 10 个 iplimages。但只有第五个更清
我像这样在 IplImage 上绘制对象: cvLine(image, point_1, point_2, color, thickness, CV_AA); // Line cvCircle(mag
我正在尝试从通过 USB 连接到 Raspberry Pi 的罗技高清摄像头捕获帧,RP 正在运行 arch linux,我正在使用 OpenCV C api 和 TCP 客户端。 TCP服务器在ub
当我们有一个 IplImage ,我们如何保存它以便以后使用,或者在我们的代码之外将其作为图像查看(例如通过 png 或 jpeg)? 作为代码示例,我有以下内容: void SaveImage()
OpenCV 中的IplImage 是什么?你能解释一下它作为一种类型的含义吗?我们应该什么时候使用它? 谢谢。 最佳答案 根据您在问题中的“c++”标签:你不应该使用它,你应该使用 cv::Mat。
不知道为什么会这样。方法 : IplImage.createFrom(image); 正在挂起而没有返回任何值。我尝试了多个图像,并确认了它们的存在。我正在编写一个利用模板匹配的应用程序,但是这个第一
我正在尝试对图像应用概率霍夫变换,但出现此编译器错误: invalid initialization of reference of type ‘cv::InputArray {aka const c
我正在Visual Studio 2012上使用OpenCV2.4.5和OpenNI2.0(带有SDK Kinect 1.6)。我尝试开发凝视跟踪应用程序,因为我使用“Kinect传感器”获取imag
我尝试将黑白 UIImage 转换为 IplImage,但从控制台提供这些。可以做什么? CGBitmapContextCreate: unsupported parameter combinatio
我是一名优秀的程序员,十分优秀!